Pavel 7 years ago
parent
commit
df5ea6df04

+ 0 - 0
js03/JQ person/css/styles.css


+ 11 - 0
js04/HTMLOptionalFields-files/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>HTML optional fields</title>
+</head>
+<body>
+	
+	<script src="js/main.js"></script>
+</body>
+</html>

+ 41 - 0
js04/HTMLOptionalFields-files/js/main.js

@@ -0,0 +1,41 @@
+
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+    {
+        name: "pasha",
+        surname: "efimenko",
+        age: 22
+    }
+]
+
+var str = "";
+str += "<table>"
+for (var i = 0; i < persons.length; i++) {
+    str += "<tr>"
+    var key = Object.keys(persons[i]);
+    for (var c = 0; c < key.length; c++) {
+        if(c < 3)
+            str += "<td>" + key[c] + ": " + persons[i][key[c]] + "</td>";
+        if(c >= 3 && key[c] in persons[i])
+            str += "<td>" + key[c] + ": " + persons[i][key[c]] + "</td>";
+    }
+    str += "</tr>"
+}
+str += "</table>";
+document.write(str);

+ 11 - 0
js04/HTMLThOptional-files/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>HTML th optional</title>
+</head>
+<body>
+	
+	<script src="js/main.js"></script>
+</body>
+</html>

+ 65 - 0
js04/HTMLThOptional-files/js/main.js

@@ -0,0 +1,65 @@
+
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+    {
+        name: "pasha",
+        surname: "efimenko",
+        age: 22
+    }
+]
+
+var str = "";
+str += "<table cellpadding = 5>"
+str += "<tr>"
+for (var i = 0; i < persons.length - 2; i++) {
+    var br;
+    br = false;
+    var key = Object.keys(persons[i]);
+    for (var j = 0; j < persons.length; j++) {
+        var keyy = Object.keys(persons[j]);
+        if(key[i] !== keyy[i]) // Проверяю совпадает ли ключ объкта с ключами остальных, если нет то заголовок не выводится 
+            br = true;
+    }
+    if(br)
+        str += "<th></th>";
+    else{
+        str += "<th>" + key[i] + "</th>";
+    }
+}
+str += "</tr>";
+    
+for (var i = 0; i < persons.length; i++) {
+    var key = Object.keys(persons[i]);
+    
+    if(!(i % 2))
+        str += "<tr style = 'background: #ccc;'>"
+    else
+        str += "<tr>"
+   
+    for (var c = 0; c < key.length; c++) {
+
+        if(c < 3)
+            str += "<td>" + persons[i][key[c]] + "</td>";
+        if(c >= 3 && key[c] in persons[i])
+            str += "<td>" + persons[i][key[c]] + "</td>";
+    }
+    str += "</tr>"
+}
+str += "</table>";
+document.write(str);

+ 11 - 0
js04/HTMLTrColor-files/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>HTML tr color</title>
+</head>
+<body>
+	
+	<script src="js/main.js"></script>
+</body>
+</html>

+ 45 - 0
js04/HTMLTrColor-files/js/main.js

@@ -0,0 +1,45 @@
+
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+    {
+        name: "pasha",
+        surname: "efimenko",
+        age: 22
+    }
+]
+
+var str = "";
+str += "<table>"
+for (var i = 0; i < persons.length; i++) {
+
+    if(!(i % 2))
+        str += "<tr style = 'background: #ccc;'>"
+    else
+        str += "<tr>"
+    var key = Object.keys(persons[i]);
+    for (var c = 0; c < key.length; c++) {
+        if(c < 3)
+            str += "<td>" + key[c] + ": " + persons[i][key[c]] + "</td>";
+        if(c >= 3 && key[c] in persons[i])
+            str += "<td>" + key[c] + ": " + persons[i][key[c]] + "</td>";
+    }
+    str += "</tr>"
+}
+str += "</table>";
+document.write(str);

+ 11 - 0
js04/html-files/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>HTML</title>
+</head>
+<body>
+	
+	<script src="js/main.js"></script>
+</body>
+</html>

+ 41 - 0
js04/html-files/js/main.js

@@ -0,0 +1,41 @@
+
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+    {
+        name: "pasha",
+        surname: "efimenko",
+        age: 22
+    }
+]
+
+var str = "";
+str += "<table>"
+for (var i = 0; i < persons.length; i++) {
+    str += "<tr>"
+    var key = Object.keys(persons[i]);
+    var j = 0;
+    for (var c = 0; c < key.length; c++) {
+        j++;
+        if(j < 3)
+        str += "<td>" + key[c] + ": " + persons[i][key[c]] + "</td>";
+    }
+    str += "</tr>"
+}
+str += "</table>";
+document.write(str);

+ 12 - 0
js04/jQHTMLThOptional-files/index.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>jQ HTML th optional</title>
+</head>
+<body>
+	
+	<script src="js/jquery-3.2.1.min.js"></script>
+	<script src="js/main.js"></script>
+</body>
+</html>

File diff suppressed because it is too large
+ 4 - 0
js04/jQHTMLThOptional-files/js/jquery-3.2.1.min.js


+ 62 - 0
js04/jQHTMLThOptional-files/js/main.js

@@ -0,0 +1,62 @@
+
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+    {
+        name: "pasha",
+        surname: "efimenko",
+        age: 22
+    }
+]
+
+
+document.write("<table cellpadding = 5>");
+document.write("<tr>");
+for (var i = 0; i < persons.length - 2; i++) {
+    var br;
+    br = false;
+    var key = Object.keys(persons[i]);
+    for (var j = 0; j < persons.length; j++) {
+        var keyy = Object.keys(persons[j]);
+        if(key[i] !== keyy[i]) // Проверяю совпадает ли ключ объкта с ключами остальных, если нет то заголовок не выводится 
+            br = true;
+    }
+    if(br)
+        document.write("<th></th>");
+    else{
+        document.write("<th></th>");
+        $("th:nth-of-type(" + (i + 1) + ")").html(key[i]);
+    }
+}
+document.write("</tr>");
+    
+for (var i = 0; i < persons.length; i++) {
+    var key = Object.keys(persons[i]);
+    
+    if(!(i % 2))
+        document.write("<tr style = 'background: #ccc;'>");
+    else
+        document.write("<tr>");
+   
+    for (var c = 0; c < key.length; c++) {
+            document.write("<td></td>");
+        	$("tr:nth-of-type("+ (i + 2) +") td:nth-of-type("+ (c + 1) +")").html(persons[i][key[c]]);
+    }
+    document.write("</tr>");
+}
+document.write("</table>");

+ 53 - 0
js04/jQHTMLThOptionalInputs-files/index.html

@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>jQ HTML th optional inputs</title>
+</head>
+<body>
+	
+	<form action="">
+
+		<p>Значения объекта "a":</p>
+		<label for="a-name">Введите имя:</label><br>	
+		<input type="text" id="a-name"><br>
+		<label for="a-surname">Введите фамилию:</label><br>
+		<input type="text" id="a-surname"><br>
+		<label for="a-age">Введите возраст</label><br>
+		<input type="text" id="a-age"><br>
+
+		<p>Значения объекта "b":</p>
+		<label for="b-name">Введите имя:</label><br>	
+		<input type="text" id="b-name"><br>
+		<label for="b-surname">Введите фамилию:</label><br>
+		<input type="text" id="b-surname"><br>
+		<label for="b-fathername">Введите имя отца</label><br>
+		<input type="text" id="b-fathername"><br>
+		
+		<p>Значения объекта "c":</p>
+		<label for="c-name">Введите имя:</label><br>	
+		<input type="text" id="c-name"><br>
+		<label for="c-surname">Введите фамилию:</label><br>
+		<input type="text" id="c-surname"><br>
+		<label for="c-sex">Выберите пол</label><br>
+		<select name="" id="c-sex">
+			<option value="male">male</option>
+			<option value="female">female</option>
+		</select>
+
+		<p>Значения объекта в массиве:</p>
+		<label for="p-name">Введите имя:</label><br>	
+		<input type="text" id="p-name"><br>
+		<label for="p-surname">Введите фамилию:</label><br>
+		<input type="text" id="p-surname"><br>
+		<label for="p-age">Введите возраст</label><br>
+		<input type="text" id="p-age"><br>
+
+		<p>
+			<input type="submit" id="submit" value="Вывести таблицу">
+		</p>
+	</form>
+	<script src="js/jquery-3.2.1.min.js"></script>
+	<script src="js/main.js"></script>
+</body>
+</html>

File diff suppressed because it is too large
+ 4 - 0
js04/jQHTMLThOptionalInputs-files/js/jquery-3.2.1.min.js


+ 66 - 0
js04/jQHTMLThOptionalInputs-files/js/main.js

@@ -0,0 +1,66 @@
+$("#submit").click(function(){
+    var a = {
+        name: $("#a-name").val(),
+        surname: $("#a-surname").val(),
+    }
+    var b = {
+        name: $("#b-name").val(),
+        surname: $("#b-surname").val(),
+    }
+    var c = {
+        name: $("#c-name").val(),
+        surname: $("#c-surname").val(),
+    }
+
+    a.age = +$("#a-age").val();
+    b.fathername = $("#b-fathername").val();
+    c.sex = $("#c-sex").val();
+
+    var persons = [a,b,c,
+        {
+            name: $("#p-name").val(),
+            surname: $("#p-surname").val(),
+            age: +$("#a-age").val()
+        }
+    ]
+
+    document.write("<table cellpadding = 5>");
+document.write("<tr>");
+for (var i = 0; i < persons.length - 2; i++) {
+    var br;
+    br = false;
+    var key = Object.keys(persons[i]);
+    for (var j = 0; j < persons.length; j++) {
+        var keyy = Object.keys(persons[j]);
+        if(key[i] !== keyy[i]) // Проверяю совпадает ли ключ объкта с ключами остальных, если нет то заголовок не выводится 
+            br = true;
+    }
+    if(br)
+        document.write("<th></th>");
+    else{
+        document.write("<th></th>");
+        $("th:nth-of-type(" + (i + 1) + ")").html(key[i]);
+    }
+}
+document.write("</tr>");
+    
+for (var i = 0; i < persons.length; i++) {
+    var key = Object.keys(persons[i]);
+    
+    if(!(i % 2))
+        document.write("<tr style = 'background: #ccc;'>");
+    else
+        document.write("<tr>");
+   
+    for (var c = 0; c < key.length; c++) {
+            document.write("<td></td>");
+            $("tr:nth-of-type("+ (i + 2) +") td:nth-of-type("+ (c + 1) +")").html(persons[i][key[c]]);
+
+    }
+    document.write("</tr>");
+}
+document.write("</table>");
+
+    return false;
+});
+

+ 379 - 0
js04/js04.md

@@ -0,0 +1,379 @@
+### 3 persons
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+```
+
+### different fields
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+```
+### fields check
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+if("age" in a){
+	alert(a.age);
+}
+if("fathername" in b){
+	alert(b.fathername);
+}
+if("sex" in c){
+	alert(c.sex);
+}
+```
+
+### array of persons
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+	{
+		name: "pasha",
+		surname: "efimenko",
+		age: 22
+	}
+]
+```
+
+### loop of persons
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+	{
+		name: "pasha",
+		surname: "efimenko",
+		age: 22
+	}
+]
+
+for (var i = 0; i < persons.length; i++) {
+	console.log(persons[i]);
+}
+```
+
+### loop of fields loop of persons
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+	{
+		name: "pasha",
+		surname: "efimenko",
+		age: 22
+	}
+]
+
+for (var i = 0; i < persons.length; i++) {
+	var j = 0;
+	for (var key in persons[i]) {
+		j++;
+		if(j < 3){
+		console.log(key + ": " + persons[i][key]);
+		}
+	}
+	console.log("\n");
+}
+```
+
+### loop of loop of keys
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+	{
+		name: "pasha",
+		surname: "efimenko",
+		age: 22
+	}
+]
+
+for (var i = 0; i < persons.length; i++) {
+	var key = Object.keys(persons[i]);
+	for (var c = 0; c < key.length; c++) {
+		if(c < 2)
+		console.log(key[c] + ": " + persons[i][key[c]]);
+	}
+	console.log("\n");
+}
+```
+
+### loop of loop with optional fields
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+b.fathername = "Nikolai";
+c.sex = "male";
+
+var persons = [a,b,c,
+	{
+		name: "pasha",
+		surname: "efimenko",
+		age: 22
+	}
+]
+
+var add = "";
+for (var i = 0; i < persons.length; i++) {
+	var key = Object.keys(persons[i]);
+	for (var c = 0; c < key.length; c++) {
+		if(c < 2)
+		console.log(key[c] + ": " + persons[i][key[c]]);
+		if(c >= 2)
+		add += "\n" + key[c] + ": " + persons[i][key[c]];	
+	}
+	console.log("\n");
+}
+console.log("Дополнительные поля:" + add);	
+```
+
+### fullName
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+a.petr = "Ivanovich";
+b.fathername = "Nikolai";
+b.petr = "Nikolayovich";
+c.sex = "male";
+c.petr = "Alexandrovich";
+
+var persons = [a,b,c,
+	{
+		name: "pasha",
+		surname: "efimenko",
+		age: 22,
+		petr: "Alexandrovich"
+	}
+]
+
+for (var i = 0; i < persons.length; i++) {
+	persons[i].fullName =persons[i].surname + " " + persons[i].name + " " + persons[i].petr;
+}
+```
+
+### serialize and deserialize
+
+```javascript
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+var b = {
+    name: "Petr",
+    surname: "Petrov",
+}
+var c = {
+    name: "Alex",
+    surname: "Sidarov",
+}
+
+a.age = 20;
+a.petr = "Ivanovich";
+b.fathername = "Nikolai";
+b.petr = "Nikolayovich";
+c.sex = "male";
+c.petr = "Alexandrovich";
+
+var persons = [a,b,c,
+	{
+		name: "pasha",
+		surname: "efimenko",
+		age: 22,
+		petr: "Alexandrovich"
+	}
+]
+
+var json = JSON.stringify(persons);
+
+var k = JSON.parse(json);
+k[4] = k[3];
+var j = JSON.stringify(k);
+```
+
+### HTML
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js04/html-files
+
+### HTML optional fields
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js04/HTMLOptionalFields-files
+
+### HTML tr color
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js04/HTMLTrColor-files
+
+### HTML th optional
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js04/jQHTMLThOptional-files
+
+### jQ HTML th optional
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js04/jQHTMLThOptional-files
+
+### jQ HTML th optional inputs 
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js04/jQHTMLThOptionalInputs-files
+
+### Задание на синий пояс.
+
+#### http://homework.pavelefimen95.fe.a-level.com.ua/js04/Задание на синий пояс.Files
+
+Задание на черный пояс
+
+```javascript
+var histor = ["1","2","1","2"];
+var predictArray = {};
+var predictValue;
+while(true){
+	predictValue = predictArray[histor[0] + histor[1] + histor[2] + histor[3]];
+if(predictValue)
+	console.log(predictValue);
+else{
+	console.log(Math.ceil(Math.random() * 2) + "rand");
+}
+
+var newValue = prompt("Введите 1 или 2");
+if(!newValue)
+	break;
+predictArray[histor[0] + histor[1] + histor[2] + histor[3]] = newValue;  
+histor.push(newValue);
+histor.shift();
+}
+```
+
+

+ 11 - 0
js04/Задание на синий пояс.Files/index.html

@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>Document</title>
+</head>
+<body>
+	
+	<script src="js/main.js"></script>
+</body>
+</html>

+ 67 - 0
js04/Задание на синий пояс.Files/js/main.js

@@ -0,0 +1,67 @@
+var someTree = {
+    tagName: "table", //html tag
+    subTags: [ //вложенные тэги
+        {
+                    tagName: "tr",
+                    subTags: [
+                        {
+                            tagName: "td",
+                            attrs: {
+                                style: "'color: #000'"
+                            },
+                            text: "some text",
+                        },
+                        {
+                            tagName: "td",
+                            text: "some text 2",
+                        }
+                    ]
+        },
+    ],
+    attrs: 
+    {
+        border: 1,
+        style: "'border: 1px solid #ccc'",
+        cellspacing: 0
+    },
+}
+
+var str = "";
+
+str += "<" + someTree.tagName + ' '; 
+for (var i = 0; i < Object.keys(someTree.attrs).length; i++) {
+    str += Object.keys(someTree.attrs)[i] + '=' + someTree.attrs[Object.keys(someTree.attrs)[i]] + " ";
+}
+str += ">";
+
+
+for (var i = 0; i < someTree.subTags.length; i++) { // вывожу внутренние теги
+    str += "<" + someTree.subTags[i].tagName + ' ';
+   
+    if(someTree.subTags[i].attrs){ // если у тега нет атрибутов то неисполняем цикл
+        for (var j = 0; j < Object.keys(someTree.subTags[i].attrs).length; j++) {
+            str += Object.keys(someTree.subTags[i].attrs)[j] + '=' + someTree.subTags[i].attrs[Object.keys(someTree.subTags[i].attrs)[j]] + " ";
+        }
+    }
+    str += ">";
+    if(someTree.subTags[i].text)
+        str += someTree.subTags[i].text;
+    for (var k = 0; k < someTree.subTags[i].subTags.length; k++) {
+        str += "<" + someTree.subTags[i].subTags[k].tagName + ' ';
+        if(someTree.subTags[i].subTags[k].attrs){ // если у тега нет атрибутов то неисполняем цикл
+            for (var j = 0; j < Object.keys(someTree.subTags[i].subTags[k].attrs).length; j++) {
+                str += Object.keys(someTree.subTags[i].subTags[k].attrs)[j] + '=' + someTree.subTags[i].subTags[k].attrs[Object.keys(someTree.subTags[i].subTags[k].attrs)[j]] + " ";
+            }
+        }
+        str += ">";
+        if(someTree.subTags[i].subTags[k].text)
+        str += someTree.subTags[i].subTags[k].text;
+        str += "</" + someTree.subTags[i].subTags[k].tagName + ' >';
+    }
+
+    str += "</" + someTree.subTags[i].tagName + ">";
+}
+
+
+str += "</" + someTree.tagName + ">";
+document.write(str);