oleg vor 6 Jahren
Ursprung
Commit
fdc392e024
2 geänderte Dateien mit 403 neuen und 0 gelöschten Zeilen
  1. 70 0
      JS_09.02.2018/index.html
  2. 333 0
      JS_09.02.2018/script.js

+ 70 - 0
JS_09.02.2018/index.html

@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>Home work 4</title>
+	<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
+	<script type="text/javascript" src="script.js"></script>
+</head>
+<body>
+	
+	<div class="task">
+		<h2>Задача 1</h2>
+		<p></p>
+		<div class="button" onclick="exercises(1)">Запустить задачку</div>
+	</div>
+	<div class="task">
+		<h2>Задача 2</h2>
+		<p></p>
+		<div class="button" onclick="exercises(2)">Запустить задачку</div>
+	</div>
+	<div class="task">
+		<h2>Задача 3</h2>
+		<p></p>
+		<div class="button" onclick="exercises(3)">Запустить задачку</div>
+	</div>
+	<div class="task">
+		<h2>Задача 4</h2>
+		<p></p>
+		<div class="button" onclick="exercises(4)">Запустить задачку</div>
+	</div>
+	<div class="task">
+		<h2>Задача 5</h2>
+		<p></p>
+		<div class="button" onclick="exercises(5)">Запустить задачку</div>
+	</div>
+	<div class="task">
+		<h2>Задача 6</h2>
+		<p></p>
+		<div class="button" onclick="exercises(6)">Запустить задачку</div>
+	</div>
+	<div class="task">
+		<h2>Задача 7</h2>
+		<p></p>
+		<div class="button" onclick="exercises(7)">Запустить задачку</div>
+	</div>
+	<div class="task" id="task8">
+		<h2>Задача 8</h2>
+		
+		
+	</div>
+	<div class="task">
+		<h2>Задача 9</h2>
+		<p></p>
+		<div class="button" onclick="exercises(9)">Запустить задачку</div>
+	</div>
+	<div class="task">
+		<h2>Задача 10</h2>
+		<p>Создайте структуру данных, полностью описывающую html-разметку картинки</p>
+		<p></p>
+				
+	</div>
+	<div class="task">
+		<h2>Задача 11</h2>
+		<p></p>
+		
+	</div>
+
+
+</body>
+</html>

+ 333 - 0
JS_09.02.2018/script.js

@@ -0,0 +1,333 @@
+$(document).ready(function() {
+
+	$(".button").css({                  // Стилизация кнопки для запуска задач
+		"display": "inline-block",
+		"background": "grey",
+		"cursor": "pointer",
+		"padding": "10px",
+		"margin": "20px 0 0 20px",
+		"border-radius": "10px",
+		"color": "white"
+	});
+
+	$(".task").css({
+		"width": "50%",
+		"border-bottom": "1px solid black",
+		"box-sizing": "border-box",
+		"padding": "10px"
+	});
+
+});
+
+	
+
+//   Задачки
+
+function exercises(par) {
+
+	var arr = [task_1, task_2, task_3, task_4, task_5, task_6, task_7, task_8, task_9];
+		
+	arr[par-1]();
+
+};
+
+
+
+// 1. Напишите функцию a, которая будет служить коротким именем для alert, 
+// то есть выводит пользовательское сообщение в стандартном модальном окне. 
+// Напишите функцию d, которая будет служить коротким именем для debugger, 
+// то есть запускает процесс отладки.
+
+
+function a(message) {
+
+	alert(message);
+}
+
+function d() {
+	debugger;
+}
+
+
+
+
+// 2. Напишите функцию max, которая сравнивает два числа и возвращает большее: 
+
+function max(a,b) {
+	return a > b ? a : b;
+}
+
+
+
+// 3. Напишите функцию-аналог Math.min(). 
+// Функция принимает любое количество чисел и возвращает меньшее из них:
+
+
+function min() {
+
+	var min = arguments[0];
+
+	for(var i = 1; i < arguments.length; i++) {
+
+		if(arguments[i] < min) {
+			min = arguments[i];
+		}
+	}
+	return min;
+}
+
+
+
+// 4. Изучите перебирающие методы массивов: forEach, filter, map. Создайте массив объектов 
+// users (~10 объектов), каждый объект имеет поля firstname, lastname, age с разными значениями, 
+// у некоторых есть поле middlename. Используя встроенные функции массивов:	 
+
+// a. Отфильтруйте пользователей младше 18 лет
+// b. Добавьте каждому объекту поле fullName, которое является конкатенацией firstname, middlename и lastname, 
+//    если есть все три, и только firstname и lastname, если middlename нет
+// c. Сформируйте новый массив, который содержит только полное имя пользователей
+
+
+var user_1 = {
+	firstname: "Joe",
+	lastname: "Cocker",
+	age: 13
+};
+
+var user_2 = {
+	firstname: "Michael",
+	lastname: "jackson",
+	age: 35
+};
+
+var user_3 = {
+	firstname: "Elvis",
+	middlename: "Aaron",
+	lastname: "Presley",
+	age: 50
+};
+
+var user_4 = {
+	firstname: "Ray",
+	lastname: "Charles",
+	age: 10
+};
+
+var user_5 = {
+	firstname: "James",
+	lastname: "Brown",
+	age: 18
+};
+
+var user_6 = {
+	firstname: "Chuck",
+	middlename: "Edward",
+	lastname: "Berry",
+	age: 14
+};
+
+var user_7 = {
+	firstname: "Eick",
+	lastname: "Claptric",
+	middlename: "Patron",
+	age: 43
+};
+
+var user_8 = {
+	firstname: "BB",
+	lastname: "King",
+	age: 16
+};
+
+var user_9 = {
+	firstname: "Freddie",
+	lastname: "Mercury",
+	age: 33
+};
+
+var user_10 = {
+	firstname: "Yngwie",
+	lastname: "Malmsteen",
+	age: 45
+};
+
+var arr = [user_1, user_2, user_3, user_4, user_5, user_6, user_7, user_8, user_9, user_10];
+
+// сортируем пользователей с возрастом < 18
+var a = arr.filter( function(obj){
+
+	return obj.age  < 18;
+});
+
+// добавляем поле middlename
+arr.forEach(function(obj) {
+
+	if (obj.middlename) {
+		obj.fullname = obj.firstname + " " + obj.middlename +" " + obj.lastname;
+	} else {
+
+		obj.fullname = obj.firstname + " " + obj.lastname;
+	}
+});
+
+// формируем новый массив который содержит только полное имя
+
+var arr2 = arr.map( function(obj) {
+
+	return obj.fullname;
+});
+
+
+
+
+// 5. Напишите функцию аналог метода массива shift. Функция удаляет из переданного
+// в параметре массива первый элемент и возвращает новый массив.
+
+
+function shift(arr) {
+
+	var arr2 = [];
+
+	for(var i = 1; i < arr.length; i++) {
+		arr2[i-1] = arr[i];
+	}
+	return arr2;
+};
+
+shift([1,2,3,4]);
+
+
+
+// 6. Напишите функцию аналог метода массива push. Функция добавляет в конец переданного 
+// в параметре массивa произвольное количество элементов.
+
+var arr1 = [1,2,3,4]; 
+
+function push(arr, ...arguments) {
+
+	var arr2 = arr;
+
+	for(var i = 0; i < arguments.length; i++) {         
+
+		 arr2[arr2.length] = arguments[i];
+
+	}
+
+	return arr2;
+}
+
+push(arr1, 5, 6, 7, 8);
+
+
+// 7. Напишите функцию аналог метода jQuery $.extend. Первый параметр 
+// функции - целевой объект, поля которого будут изменены или расширены. 
+// Остальные параметры - объекты-источники, полями которых будет расширяться целевой объект.
+
+
+var myInfo = {
+	name: "Oleg",
+	lastName: "Kriuchkov",
+	skills: {
+		guitar: "pro",
+		games: "pro"
+	}
+}
+
+var extraInfo = {
+	skills: {
+		cooking: "pro"
+	},
+	age: 24
+}
+
+
+function extend(obj) {          // obj_1 - Целевой объект. Объекты-источники берутся из arguments.
+
+	for(var i = 1; i < arguments.length; i++) {
+
+		for(var key in arguments[i]) {
+
+			if (obj[key] && typeof obj[key] == "object") {
+
+				for(var extraKey in arguments[i][key]) {
+
+					obj[key][extraKey] = arguments[i][key][extraKey];
+				}
+			} else {
+
+				obj[key] = arguments[i][key];
+			}
+		}
+	}
+
+	return obj;
+}
+
+extend(myInfo, extraInfo);
+
+
+
+
+// 8. Напишите функцию setComment с параметрами: date, message, author. Дата и текст 
+// сообщения - обязательные параметры, если какой-то из них или оба отсутствуют, 
+// то выполнение функции должно обрываться, а пользователю выдаваться предупреждение (alert) 
+// о том, что данные переданы некорректно. Параметр author - опциональный, но должна 
+// происходить проверка: если параметр не передан, то вместо него подставляется значение ‘Anonymous’.
+// Функция распечатывает на странице текст в формате: 
+// 				<имя_автора>, <дата>
+// 				<текст_сообщения>
+
+
+function setComment(date, message, author) {
+
+	if(!date || !message) {
+		return alert("Данные переданы некорректно.");
+	}
+
+	!author? author=author : author = "Anonymous";
+
+	$("#task8").append("<div><span>"+author+", "+date+"</span><br><span>"+message+"</div>");
+	$("#task8 div span:first-child").css({"font-weight": "800"});
+};
+
+setComment("2016-11-02", "Everything is ok", "John");
+
+
+
+// 9. Используя замыкание, напишите функцию createTimer, которая использует метод 
+// performance.now() для получения текущей временной метки и служит для замера 
+// времени выполнения другого кода:
+
+
+function createTimer() {
+
+	var t = performance.now();
+
+	return function () {
+		return performance.now() - t;
+	}
+}
+
+var timer = createTimer();
+alert('!')  
+alert( timer() );
+
+
+// 10. Используя замыкания, создайте функцию createAdder(), которая принимает на вход 
+// любой примитивный параметр и возвращает функцию, которая добавляет к первому параметру 
+// второй. 
+
+function createAdder(arg1) {
+
+	return function (arg2) {
+
+		return arg1 + arg2;
+	}
+}
+
+
+
+
+
+
+