// blocks { let a = 10 { let b = 20 { let c = 30 //a === 10, b === 20, c === 30 b++ a *= 10 } { let c = 50 //a === 100, b === 21, c === 50 b += 500 } { const a = 100500 const d = "value" //a === 100500, b === 521, c === нет переменной, d === value { let a = -50 b = 1000 debugger;//a === -50, b === 1000, c === нет переменной, d === value } debugger;//a === 100500, b === 1000, c === нет переменной, d === value } debugger;//a === 100, b === 1000 } debugger;//a === 100 } //Ответьте на вопросы в комментариях и сверьтесь с отладчиком. console.log специально не писал */ /* comparison if*/ { var age = +prompt("Сколько вам лет?", ""); if (age < 0) { alert("ещё не родился"); } else { if (age < 18) { alert("школьник"); } else { if (age < 30) { alert("молодеж"); } else { if (age < 45) { alert("зрелость"); } else { if (age < 60) { alert("закат"); } else { if (age >= 60) { alert("как пенсия?"); } else { alert("то ли киборг, то ли KERNESS"); } } } } } } } //Добавьте условие отрицательного возраста в пример выше. Расставьте недостающие (но синтаксически необязательные) фигурные скобки. Выкиньте лишнее из текущего кода /*switch: sizes Сделайте задание Comparison: sizes используя switch*/ //Comparison: sizes //Сделайте перевод перевод из нашей системы размеров в американскую или любую на выбор. Используйте prompt, условия сравнения и alert. { const sizeUA = prompt('введи размер верхней одежды, платья, брюк в системе UA (40, 42, 44, .., 54), а я перевду в буквенную USA'); let result; switch (sizeUA) { case "37": case "38": case "39": result = "Детский размер" break; case "40": case "41": result = "S" break; case "42": case "43": result = "M" break; case "44": case "45": case "46": result = "L" break; case "47": case "48": case "49": case "50": result = "XL" break; case "51": case "52": case "53": case "54": result = "XXL" break; } alert(`ваш размер "${result}" в системе USA`) } /*switch: if Перепишите пример ниже, используя if.*/ let color = prompt("Введите цвет",""); switch (color){ case "red": document.write("
красный
"); case "black": document.write("
черный
"); break; case "blue": document.write("
синий
"); case "green": document.write("
зеленый
"); break; default: document.write("
Я не понял
"); } { let color = prompt("Введите цвет",""); if (color === "red"){ document.write("
красный
"); document.write("
черный
") } if (color === "black"){ document.write("
черный
") } if (color === "blue"){ document.write("
синий
"); document.write("
зеленый
"); } if (color === "green"){ document.write("
зеленый
"); } if ( !(color == "red" || color === "black" || color === "blue" || color === "green") ){ document.write("
Я не понял
") } } /*noswitch Напишите функцию noSwitch, которая принимает объект со значениями-функциями, ключ для объекта и запускает одну из функций из объекта если ключ найден, иначе - запускает default: const noSwitch = (key, cases, defaultKey='default') => { //проверка наличия key в cases //если есть - достать значение по ключу. это будет функция. Запустить ее //если нет - извлечь из объекта cases значение по ключу, имя которого лежит в переменной defaultKey. Запустить //пущай функция noSWitch возвращает то, что возвращает одна из функций из объекта } */ { const noSwitch = (key, cases, defaultKey='default') => { if (key in cases){ return cases[key]() }else{ return cases[defaultKey]() } } const drink = prompt("Что вы любите пить") noSwitch(drink, { воду: () => console.log('Самый здоровый выбор!'), чай(){ console.log('Вкусная и полезная штука. Не переусердствуйте с сахаром') }, "пиво": () => console.log('Хорошо летом, да в меру'), виски: function(){ console.log('Да вы, батенька, эстет! Не забудьте лед и сигару') }, default(){ console.log('шото я не понял') } }) } /*closure calc fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json()) .then(data => { //эта функция запускается когда данные скачиваются. //остальной код работает РАНЬШЕ. //только ТУТ есть переменная data со скачанными данными console.log(data) //изучите структуру, получаемую с сервера в консоли }) Напишите внутри анонимной функции, переданной в then (data =>): цикл, который перебирает курсы; на каждой итерации создается кнопка (document.createElement) текст кнопки - название валюты (innerHTML или innerText) Назначьте обработчик события на этой кнопке (onclick = () => {.....}). Функция-обработчик должна быть написана прямо в теле цикла Обработчик должен спрашивать сумму используя prompt и переводить эту суммы из валюты, написанной на кнопке в USD Найдите замыкания. Для доступа к валютам из data.rates используйте [], . тут не поможет. Кнопки добавляйте в специальный контейнер (div например), созданный в HTML, или, на худой конец, в body*/ { fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json()) .then(data => { //эта функция запускается когда данные скачиваются. //остальной код работает РАНЬШЕ. //только ТУТ есть переменная data со скачанными данными console.log(data) //изучите структуру, получаемую с сервера в консоли for (rate in data.rates) { console.log(rate) const cource = data.rates[rate] const div = document.createElement('div') const button = document.createElement('button') button.innerText = rate button.classList.add('button') div.append(button) document.body.append(div) button.onclick = () => { alert(cource) const value = +prompt('какую сумму будем менять?') const result = value / cource alert(result) } } }) } /* closure calc 2 Создайте HTML файл с : - валюта в которую происходит обмен
- кросскурс между валютами - сумма в исходной валюте
- сумма в валюте, в которую хотим поменять Используя заготовку из предыдущего задания, наполните select-ы тэгами option с названиями валют, используя цикл document.createElement innerText для option from.append или to.append За пределами цикла назначьте обработчики onchange для элементов select и oninput для элемента input, используя их id. По этим событиям обновляйте текст в div#rate и div#result Для чтения текущего значения select используйте свойство value: from.value или to.value*/ { fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json()) .then(data => { //эта функция запускается когда данные скачиваются. //остальной код работает РАНЬШЕ. //только ТУТ есть переменная data со скачанными данными console.log(data) //изучите структуру, получаемую с сервера в консоли const from = document.createElement('select') from.id = "from" const to = document.createElement('select') to.id = "to" document.body.append(from) document.body.append(to) const rateNow = document.createElement('div') rateNow.id = 'rateNow' document.body.append(rateNow) const amount = document.createElement('input') amount.id = 'amount' amount.type = 'number' document.body.append(amount) const result = document.createElement('div') result.id = 'result' document.body.append(result) for (rate in data.rates) { console.log(rate) const cource = data.rates[rate] const option = document.createElement('option') option.innerText = rate option.classList.add('option') option.value = rate const option2 = document.createElement('option') option2.innerText = rate option2.classList.add('option') option2.value = rate from.append(option); to.append(option2); } from.onchange = to.onchange = amount.oninput = () => { rateNow.innerText = (data.rates[to.value] / data.rates[from.value]).toFixed(4) result.innerText = (data.rates[to.value] / data.rates[from.value] * amount.value).toFixed(2) } }) } /*countries and cities fetch('https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.min.json').then(res => res.json()) .then(data => { //эта функция запускается когда данные скачиваются. //остальной код работает РАНЬШЕ. //только ТУТ есть переменная data со скачанными данными console.log(data) //изучите структуру, получаемую с сервера в консоли }) По аналогии с предыдущем заданием, реализуйте интерфейс выбора страны и города: по закрузке данных наполняйте select#countries элементами option с названиями стран; так же назначьте обработчик события onchange в select#countries, который: удаляет старый контент select#cities (достаточно занести в innerHTML или innerText пустую строку) добавляет в select#cities элементы option с городами из выбранной только что страны. Таким образом, при изменении страны будет меняться список городов в select#cities*/ { fetch('https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.min.json').then(res => res.json()) .then(data => { //эта функция запускается когда данные скачиваются. //остальной код работает РАНЬШЕ. //только ТУТ есть переменная data со скачанными данными console.log(data) //изучите структуру, получаемую с сервера в консоли const countries = document.createElement('select') const cities = document.createElement('select') for (country in data){ const optionCounty = document.createElement('option') optionCounty.innerText = optionCounty.value = country countries.append(optionCounty) } countries.onchange = () => { cities.innerText = '' for (city of data[countries.value]){ const optionCity = document.createElement('option') optionCity.innerText = optionCity.value = city cities.append(optionCity) } } document.body.append(countries) document.body.append(cities) }) }