js.js 11 KB

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