// ДЗ: Ветвления
// задание 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);
}
};
});
}