index.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  1. // blocks
  2. {
  3. let a = 10
  4. {
  5. let b = 20
  6. {
  7. let c = 30
  8. //a === 10, b === 20, c === 30
  9. b++
  10. a *= 10
  11. }
  12. {
  13. let c = 50
  14. //a === 100, b === 21, c === 50
  15. b += 500
  16. }
  17. {
  18. const a = 100500
  19. const d = "value"
  20. //a === 100500, b === 521, c === нет переменной, d === value
  21. {
  22. let a = -50
  23. b = 1000
  24. debugger;//a === -50, b === 1000, c === нет переменной, d === value
  25. }
  26. debugger;//a === 100500, b === 1000, c === нет переменной, d === value
  27. }
  28. debugger;//a === 100, b === 1000
  29. }
  30. debugger;//a === 100
  31. }
  32. //Ответьте на вопросы в комментариях и сверьтесь с отладчиком. console.log специально не писал */
  33. /* comparison if*/
  34. {
  35. var age = +prompt("Сколько вам лет?", "");
  36. if (age < 0) {
  37. alert("ещё не родился");
  38. }
  39. else {
  40. if (age < 18) {
  41. alert("школьник");
  42. }
  43. else {
  44. if (age < 30) {
  45. alert("молодеж");
  46. }
  47. else {
  48. if (age < 45) {
  49. alert("зрелость");
  50. }
  51. else {
  52. if (age < 60) {
  53. alert("закат");
  54. }
  55. else {
  56. if (age >= 60) {
  57. alert("как пенсия?");
  58. }
  59. else {
  60. alert("то ли киборг, то ли KERNESS");
  61. }
  62. }
  63. }
  64. }
  65. }
  66. }
  67. }
  68. //Добавьте условие отрицательного возраста в пример выше. Расставьте недостающие (но синтаксически необязательные) фигурные скобки. Выкиньте лишнее из текущего кода
  69. /*switch: sizes
  70. Сделайте задание Comparison: sizes используя switch*/
  71. //Comparison: sizes
  72. //Сделайте перевод перевод из нашей системы размеров в американскую или любую на выбор. Используйте prompt, условия сравнения и alert.
  73. {
  74. const sizeUA = prompt('введи размер верхней одежды, платья, брюк в системе UA (40, 42, 44, .., 54), а я перевду в буквенную USA');
  75. let result;
  76. switch (sizeUA) {
  77. case "37":
  78. case "38":
  79. case "39":
  80. result = "Детский размер"
  81. break;
  82. case "40":
  83. case "41":
  84. result = "S"
  85. break;
  86. case "42":
  87. case "43":
  88. result = "M"
  89. break;
  90. case "44":
  91. case "45":
  92. case "46":
  93. result = "L"
  94. break;
  95. case "47":
  96. case "48":
  97. case "49":
  98. case "50":
  99. result = "XL"
  100. break;
  101. case "51":
  102. case "52":
  103. case "53":
  104. case "54":
  105. result = "XXL"
  106. break;
  107. }
  108. alert(`ваш размер "${result}" в системе USA`)
  109. }
  110. /*switch: if
  111. Перепишите пример ниже, используя if.*/
  112. let color = prompt("Введите цвет","");
  113. switch (color){
  114. case "red": document.write("<div style='background-color: red;'>красный</div>");
  115. case "black": document.write("<div style='background-color: black; color: white;'>черный</div>");
  116. break;
  117. case "blue": document.write("<div style='background-color: blue;'>синий</div>");
  118. case "green": document.write("<div style='background-color: green;'>зеленый</div>");
  119. break;
  120. default: document.write("<div style='background-color: gray;'>Я не понял</div>");
  121. }
  122. {
  123. let color = prompt("Введите цвет","");
  124. if (color === "red"){
  125. document.write("<div style='background-color: red;'>красный</div>");
  126. document.write("<div style='background-color: black; color: white;'>черный</div>")
  127. }
  128. if (color === "black"){
  129. document.write("<div style='background-color: black; color: white;'>черный</div>")
  130. }
  131. if (color === "blue"){
  132. document.write("<div style='background-color: blue;'>синий</div>");
  133. document.write("<div style='background-color: green;'>зеленый</div>");
  134. }
  135. if (color === "green"){
  136. document.write("<div style='background-color: green;'>зеленый</div>");
  137. }
  138. if ( !(color == "red" || color === "black" || color === "blue" || color === "green") ){
  139. document.write("<div style='background-color: gray;'>Я не понял</div>")
  140. }
  141. }
  142. /*noswitch
  143. Напишите функцию noSwitch, которая принимает объект со значениями-функциями, ключ для объекта и запускает одну из функций из объекта если ключ найден, иначе - запускает default:
  144. const noSwitch = (key, cases, defaultKey='default') => {
  145. //проверка наличия key в cases
  146. //если есть - достать значение по ключу. это будет функция. Запустить ее
  147. //если нет - извлечь из объекта cases значение по ключу, имя которого лежит в переменной defaultKey. Запустить
  148. //пущай функция noSWitch возвращает то, что возвращает одна из функций из объекта
  149. }
  150. */
  151. {
  152. const noSwitch = (key, cases, defaultKey='default') => {
  153. if (key in cases){
  154. return cases[key]()
  155. }else{
  156. return cases[defaultKey]()
  157. }
  158. }
  159. const drink = prompt("Что вы любите пить")
  160. noSwitch(drink, {
  161. воду: () => console.log('Самый здоровый выбор!'),
  162. чай(){
  163. console.log('Вкусная и полезная штука. Не переусердствуйте с сахаром')
  164. },
  165. "пиво": () => console.log('Хорошо летом, да в меру'),
  166. виски: function(){
  167. console.log('Да вы, батенька, эстет! Не забудьте лед и сигару')
  168. },
  169. default(){
  170. console.log('шото я не понял')
  171. }
  172. })
  173. }
  174. /*closure calc
  175. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  176. .then(data => {
  177. //эта функция запускается когда данные скачиваются.
  178. //остальной код работает РАНЬШЕ.
  179. //только ТУТ есть переменная data со скачанными данными
  180. console.log(data) //изучите структуру, получаемую с сервера в консоли
  181. })
  182. Напишите внутри анонимной функции, переданной в then (data =>):
  183. цикл, который перебирает курсы;
  184. на каждой итерации создается кнопка (document.createElement)
  185. текст кнопки - название валюты (innerHTML или innerText)
  186. Назначьте обработчик события на этой кнопке (onclick = () => {.....}). Функция-обработчик должна быть написана прямо в теле цикла
  187. Обработчик должен спрашивать сумму используя prompt и переводить эту суммы из валюты, написанной на кнопке в USD
  188. Найдите замыкания. Для доступа к валютам из data.rates используйте [], . тут не поможет. Кнопки добавляйте в специальный контейнер (div например), созданный в HTML, или, на худой конец, в body*/
  189. {
  190. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  191. .then(data => {
  192. //эта функция запускается когда данные скачиваются.
  193. //остальной код работает РАНЬШЕ.
  194. //только ТУТ есть переменная data со скачанными данными
  195. console.log(data) //изучите структуру, получаемую с сервера в консоли
  196. for (rate in data.rates) {
  197. console.log(rate)
  198. const cource = data.rates[rate]
  199. const div = document.createElement('div')
  200. const button = document.createElement('button')
  201. button.innerText = rate
  202. button.classList.add('button')
  203. div.append(button)
  204. document.body.append(div)
  205. button.onclick = () => {
  206. alert(cource)
  207. const value = +prompt('какую сумму будем менять?')
  208. const result = value / cource
  209. alert(result)
  210. }
  211. }
  212. })
  213. }
  214. /* closure calc 2
  215. Создайте HTML файл с :
  216. <select id='from'> - исходная валюта
  217. <select id='to'> - валюта в которую происходит обмен
  218. <div id='rate'> - кросскурс между валютами
  219. <input type='number' id='amount' /> - сумма в исходной валюте
  220. <div id='result'> - сумма в валюте, в которую хотим поменять
  221. Используя заготовку из предыдущего задания, наполните select-ы тэгами option с названиями валют, используя цикл
  222. document.createElement
  223. innerText для option
  224. from.append или to.append
  225. За пределами цикла назначьте обработчики onchange для элементов select и oninput для элемента input, используя их id. По этим событиям обновляйте текст в div#rate и div#result
  226. Для чтения текущего значения select используйте свойство value: from.value или to.value*/
  227. {
  228. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  229. .then(data => {
  230. //эта функция запускается когда данные скачиваются.
  231. //остальной код работает РАНЬШЕ.
  232. //только ТУТ есть переменная data со скачанными данными
  233. console.log(data) //изучите структуру, получаемую с сервера в консоли
  234. const from = document.createElement('select')
  235. from.id = "from"
  236. const to = document.createElement('select')
  237. to.id = "to"
  238. document.body.append(from)
  239. document.body.append(to)
  240. const rateNow = document.createElement('div')
  241. rateNow.id = 'rateNow'
  242. document.body.append(rateNow)
  243. const amount = document.createElement('input')
  244. amount.id = 'amount'
  245. amount.type = 'number'
  246. document.body.append(amount)
  247. const result = document.createElement('div')
  248. result.id = 'result'
  249. document.body.append(result)
  250. for (rate in data.rates) {
  251. console.log(rate)
  252. const cource = data.rates[rate]
  253. const option = document.createElement('option')
  254. option.innerText = rate
  255. option.classList.add('option')
  256. option.value = rate
  257. const option2 = document.createElement('option')
  258. option2.innerText = rate
  259. option2.classList.add('option')
  260. option2.value = rate
  261. from.append(option);
  262. to.append(option2);
  263. }
  264. from.onchange = to.onchange = amount.oninput = () => {
  265. rateNow.innerText = (data.rates[to.value] / data.rates[from.value]).toFixed(4)
  266. result.innerText = (data.rates[to.value] / data.rates[from.value] * amount.value).toFixed(2)
  267. }
  268. })
  269. }
  270. /*countries and cities
  271. fetch('https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.min.json').then(res => res.json())
  272. .then(data => {
  273. //эта функция запускается когда данные скачиваются.
  274. //остальной код работает РАНЬШЕ.
  275. //только ТУТ есть переменная data со скачанными данными
  276. console.log(data) //изучите структуру, получаемую с сервера в консоли
  277. })
  278. По аналогии с предыдущем заданием, реализуйте интерфейс выбора страны и города:
  279. по закрузке данных наполняйте select#countries элементами option с названиями стран;
  280. так же назначьте обработчик события onchange в select#countries, который:
  281. удаляет старый контент select#cities (достаточно занести в innerHTML или innerText пустую строку)
  282. добавляет в select#cities элементы option с городами из выбранной только что страны.
  283. Таким образом, при изменении страны будет меняться список городов в select#cities*/
  284. {
  285. fetch('https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.min.json').then(res => res.json())
  286. .then(data => {
  287. //эта функция запускается когда данные скачиваются.
  288. //остальной код работает РАНЬШЕ.
  289. //только ТУТ есть переменная data со скачанными данными
  290. console.log(data) //изучите структуру, получаемую с сервера в консоли
  291. const countries = document.createElement('select')
  292. const cities = document.createElement('select')
  293. for (country in data){
  294. const optionCounty = document.createElement('option')
  295. optionCounty.innerText = optionCounty.value = country
  296. countries.append(optionCounty)
  297. }
  298. countries.onchange = () => {
  299. cities.innerText = ''
  300. for (city of data[countries.value]){
  301. const optionCity = document.createElement('option')
  302. optionCity.innerText = optionCity.value = city
  303. cities.append(optionCity)
  304. }
  305. }
  306. document.body.append(countries)
  307. document.body.append(cities)
  308. })
  309. }