123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- // 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("<div style='background-color: red;'>красный</div>");
- case "black": document.write("<div style='background-color: black; color: white;'>черный</div>");
- break;
- case "blue": document.write("<div style='background-color: blue;'>синий</div>");
- case "green": document.write("<div style='background-color: green;'>зеленый</div>");
- break;
- default: document.write("<div style='background-color: gray;'>Я не понял</div>");
- }
- {
- let color = prompt("Введите цвет","");
-
- if (color === "red"){
- document.write("<div style='background-color: red;'>красный</div>");
- document.write("<div style='background-color: black; color: white;'>черный</div>")
- }
- if (color === "black"){
- document.write("<div style='background-color: black; color: white;'>черный</div>")
- }
- if (color === "blue"){
- document.write("<div style='background-color: blue;'>синий</div>");
- document.write("<div style='background-color: green;'>зеленый</div>");
- }
- if (color === "green"){
- document.write("<div style='background-color: green;'>зеленый</div>");
- }
-
- if ( !(color == "red" || color === "black" || color === "blue" || color === "green") ){
- document.write("<div style='background-color: gray;'>Я не понял</div>")
- }
- }
- /*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 id='from'> - исходная валюта
- <select id='to'> - валюта в которую происходит обмен
- <div id='rate'> - кросскурс между валютами
- <input type='number' id='amount' /> - сумма в исходной валюте
- <div id='result'> - сумма в валюте, в которую хотим поменять
- Используя заготовку из предыдущего задания, наполните 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)
- })
- }
|