// ДЗ: Ветвления // задание 1 blocks { let a = 10; { let b = 20; { let c = 30; // значения переменных: a=10, b=20, c=30, d=undefined b++; a *= 10; } { let c = 50; // значения переменных: a=100, b=21, c=50, d=undefined b += 500; } { const a = 100500; const d = 'value'; // значения переменных: a=100500, b=521, c=50, d="value" { let a = -50; b = 1000; // значения переменных: a=-50, b=1000, c=50, d="value" } // значения переменных: a=100500, b=1000, c=50, d="value" } // значения переменных: a=100, b=1000, c=50, d=undefined } // значения переменных: a=10, b=undefined, c=undefined, d=undefined } // задание 2 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 < 100) { alert('как пенсия?'); } else { alert('то ли киборг, то ли KERNESS'); } } // задание 3 switch: sizes { const size = prompt('Введите размер одежды в украинской системе'); let convertedSize; switch (size) { case 'XS': convertedSize = '0'; break; case 'S': convertedSize = '2'; break; case 'M': convertedSize = '4'; break; case 'L': convertedSize = '6'; break; case 'XL': convertedSize = '8'; break; case 'XXL': convertedSize = '10'; break; default: convertedSize = 'Неизвестный размер'; } alert(`Американский размер: ${convertedSize}`); } // задание 4 switch: if { let color = prompt('Введите цвет', ''); if (color === 'red') { document.write("
красный
"); } else if (color === 'black') { document.write("
черный
"); } else if (color === 'blue') { document.write("
синий
"); } else if (color === 'green') { document.write("
зеленый
"); } else { document.write("
Я не понял
"); } } // задание 5 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('шото я не понял'); }, }); } // задание 6 closure calc { fetch('https://open.er-api.com/v6/latest/USD') .then((res) => res.json()) .then((data) => { // создаем контейнер для кнопок const container = document.createElement('div'); // перебираем курсы валют for (const currency in data.rates) { // создаем кнопку const button = document.createElement('button'); // устанавливаем текст кнопки button.innerHTML = currency; // назначаем обработчик события нажатия на кнопку button.onclick = () => { // запрашиваем сумму у пользователя const amount = prompt('Введите сумму'); // выводим результат перевода в консоль console.log(`${amount} ${currency} = ${amount * data.rates[currency]} USD`); }; // добавляем кнопку в контейнер container.appendChild(button); } // добавляем контейнер с кнопками на страницу document.body.appendChild(container); }); } // задание 7 closure calc 2 { // получаем элементы страницы const from = document.getElementById('from'); const to = document.getElementById('to'); const rate = document.getElementById('rate'); const amount = document.getElementById('amount'); const result = document.getElementById('result'); // функция для обновления курса и результата function update() { // вычисляем курс const exchangeRate = rates[to.value] / rates[from.value]; // обновляем текст в div#rate rate.innerText = `1 ${from.value} = ${exchangeRate} ${to.value}`; // вычисляем результат result.innerText = `${amount.value} ${from.value} = ${amount.value * exchangeRate} ${to.value}`; } fetch('https://open.er-api.com/v6/latest/USD') .then((res) => res.json()) .then((data) => { // сохраняем курсы валют const rates = data.rates; // перебираем курсы валют for (const currency in rates) { // создаем опцию const option = document.createElement('option'); // устанавливаем текст опции option.innerText = currency; // добавляем опцию в селекты from.appendChild(option); to.appendChild(option.cloneNode(true)); } // назначаем обработчики событий для элементов управления from.onchange = update; to.onchange = update; amount.oninput = update; // инициализируем первоначальный курс и результат update(); }); } // задание 8 countries and cities { // получаем элементы страницы const countries = document.getElementById('countries'); const cities = document.getElementById('cities'); fetch( 'https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.min.json', ) .then((res) => res.json()) .then((data) => { // перебираем страны for (const country of data) { // создаем опцию const option = document.createElement('option'); // устанавливаем текст опции option.innerText = country.name; // добавляем опцию в селект стран countries.appendChild(option); } // назначаем обработчик события onchange в селекте стран countries.onchange = function () { // удаляем старый контент селекта городов cities.innerHTML = ''; // получаем индекс выбранной страны const index = countries.selectedIndex; // перебираем города этой страны for (const city of data[index].cities) { // создаем опцию const option = document.createElement('option'); // устанавливаем текст опции option.innerText = city; // добавляем опцию в селект городов cities.appendChild(option); } }; }); }