index.js 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. // ДЗ: Ветвления
  2. // задание 1 blocks
  3. {
  4. let a = 10;
  5. {
  6. let b = 20;
  7. {
  8. let c = 30;
  9. // значения переменных: a=10, b=20, c=30, d=undefined
  10. b++;
  11. a *= 10;
  12. }
  13. {
  14. let c = 50;
  15. // значения переменных: a=100, b=21, c=50, d=undefined
  16. b += 500;
  17. }
  18. {
  19. const a = 100500;
  20. const d = 'value';
  21. // значения переменных: a=100500, b=521, c=50, d="value"
  22. {
  23. let a = -50;
  24. b = 1000;
  25. // значения переменных: a=-50, b=1000, c=50, d="value"
  26. }
  27. // значения переменных: a=100500, b=1000, c=50, d="value"
  28. }
  29. // значения переменных: a=100, b=1000, c=50, d=undefined
  30. }
  31. // значения переменных: a=10, b=undefined, c=undefined, d=undefined
  32. }
  33. // задание 2 comparison if
  34. {
  35. var age = +prompt('Сколько вам лет?', '');
  36. if (age < 0) {
  37. alert('Отрицательный возраст? Что-то не так...');
  38. } else if (age < 18) {
  39. alert('школьник');
  40. } else if (age < 30) {
  41. alert('молодеж');
  42. } else if (age < 45) {
  43. alert('зрелость');
  44. } else if (age < 60) {
  45. alert('закат');
  46. } else if (age < 100) {
  47. alert('как пенсия?');
  48. } else {
  49. alert('то ли киборг, то ли KERNESS');
  50. }
  51. }
  52. // задание 3 switch: sizes
  53. {
  54. const size = prompt('Введите размер одежды в украинской системе');
  55. let convertedSize;
  56. switch (size) {
  57. case 'XS':
  58. convertedSize = '0';
  59. break;
  60. case 'S':
  61. convertedSize = '2';
  62. break;
  63. case 'M':
  64. convertedSize = '4';
  65. break;
  66. case 'L':
  67. convertedSize = '6';
  68. break;
  69. case 'XL':
  70. convertedSize = '8';
  71. break;
  72. case 'XXL':
  73. convertedSize = '10';
  74. break;
  75. default:
  76. convertedSize = 'Неизвестный размер';
  77. }
  78. alert(`Американский размер: ${convertedSize}`);
  79. }
  80. // задание 4 switch: if
  81. {
  82. let color = prompt('Введите цвет', '');
  83. if (color === 'red') {
  84. document.write("<div style='background-color: red;'>красный</div>");
  85. } else if (color === 'black') {
  86. document.write("<div style='background-color: black; color: white;'>черный</div>");
  87. } else if (color === 'blue') {
  88. document.write("<div style='background-color: blue;'>синий</div>");
  89. } else if (color === 'green') {
  90. document.write("<div style='background-color: green;'>зеленый</div>");
  91. } else {
  92. document.write("<div style='background-color: gray;'>Я не понял</div>");
  93. }
  94. }
  95. // задание 5 noswitch
  96. {
  97. const noSwitch = (key, cases, defaultKey = 'default') => {
  98. if (key in cases) {
  99. return cases[key]();
  100. } else {
  101. return cases[defaultKey]();
  102. }
  103. };
  104. const drink = prompt('Что вы любите пить');
  105. noSwitch(drink, {
  106. воду: () => console.log('Самый здоровый выбор!'),
  107. чай() {
  108. console.log('Вкусная и полезная штука. Не переусердствуйте с сахаром');
  109. },
  110. пиво: () => console.log('Хорошо летом, да в меру'),
  111. виски: function () {
  112. console.log('Да вы, батенька, эстет! Не забудьте лед и сигару');
  113. },
  114. default() {
  115. console.log('шото я не понял');
  116. },
  117. });
  118. }
  119. // задание 6 closure calc
  120. {
  121. fetch('https://open.er-api.com/v6/latest/USD')
  122. .then((res) => res.json())
  123. .then((data) => {
  124. // создаем контейнер для кнопок
  125. const container = document.createElement('div');
  126. // перебираем курсы валют
  127. for (const currency in data.rates) {
  128. // создаем кнопку
  129. const button = document.createElement('button');
  130. // устанавливаем текст кнопки
  131. button.innerHTML = currency;
  132. // назначаем обработчик события нажатия на кнопку
  133. button.onclick = () => {
  134. // запрашиваем сумму у пользователя
  135. const amount = prompt('Введите сумму');
  136. // выводим результат перевода в консоль
  137. console.log(`${amount} ${currency} = ${amount * data.rates[currency]} USD`);
  138. };
  139. // добавляем кнопку в контейнер
  140. container.appendChild(button);
  141. }
  142. // добавляем контейнер с кнопками на страницу
  143. document.body.appendChild(container);
  144. });
  145. }
  146. // задание 7 closure calc 2
  147. {
  148. // получаем элементы страницы
  149. const from = document.getElementById('from');
  150. const to = document.getElementById('to');
  151. const rate = document.getElementById('rate');
  152. const amount = document.getElementById('amount');
  153. const result = document.getElementById('result');
  154. // функция для обновления курса и результата
  155. function update() {
  156. // вычисляем курс
  157. const exchangeRate = rates[to.value] / rates[from.value];
  158. // обновляем текст в div#rate
  159. rate.innerText = `1 ${from.value} = ${exchangeRate} ${to.value}`;
  160. // вычисляем результат
  161. result.innerText = `${amount.value} ${from.value} = ${amount.value * exchangeRate} ${to.value}`;
  162. }
  163. fetch('https://open.er-api.com/v6/latest/USD')
  164. .then((res) => res.json())
  165. .then((data) => {
  166. // сохраняем курсы валют
  167. const rates = data.rates;
  168. // перебираем курсы валют
  169. for (const currency in rates) {
  170. // создаем опцию
  171. const option = document.createElement('option');
  172. // устанавливаем текст опции
  173. option.innerText = currency;
  174. // добавляем опцию в селекты
  175. from.appendChild(option);
  176. to.appendChild(option.cloneNode(true));
  177. }
  178. // назначаем обработчики событий для элементов управления
  179. from.onchange = update;
  180. to.onchange = update;
  181. amount.oninput = update;
  182. // инициализируем первоначальный курс и результат
  183. update();
  184. });
  185. }
  186. // задание 8 countries and cities
  187. {
  188. // получаем элементы страницы
  189. const countries = document.getElementById('countries');
  190. const cities = document.getElementById('cities');
  191. fetch(
  192. 'https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.min.json',
  193. )
  194. .then((res) => res.json())
  195. .then((data) => {
  196. // перебираем страны
  197. for (const country of data) {
  198. // создаем опцию
  199. const option = document.createElement('option');
  200. // устанавливаем текст опции
  201. option.innerText = country.name;
  202. // добавляем опцию в селект стран
  203. countries.appendChild(option);
  204. }
  205. // назначаем обработчик события onchange в селекте стран
  206. countries.onchange = function () {
  207. // удаляем старый контент селекта городов
  208. cities.innerHTML = '';
  209. // получаем индекс выбранной страны
  210. const index = countries.selectedIndex;
  211. // перебираем города этой страны
  212. for (const city of data[index].cities) {
  213. // создаем опцию
  214. const option = document.createElement('option');
  215. // устанавливаем текст опции
  216. option.innerText = city;
  217. // добавляем опцию в селект городов
  218. cities.appendChild(option);
  219. }
  220. };
  221. });
  222. }