App.js 9.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. // Таблица умножения
  2. // Сделать таблицу умножения, используя DOM createElement и innerText. Создайте таблицу, вложенные строки и ячейки в циклах.
  3. const space1 = document.createElement('br');
  4. document.body.appendChild(space1);
  5. const task1 = document.createElement('div');
  6. document.body.appendChild(task1);
  7. task1.setAttribute('id', 'task-1');
  8. var table = document.createElement('table');
  9. table.setAttribute('border', '2');
  10. var tableBody = document.createElement('tbody');
  11. for (let i = 1; i < 10; i++) {
  12. var tr = document.createElement('tr');
  13. for (let j = 1; j < 10; j++) {
  14. var td = document.createElement('td');
  15. var tdText = document.createTextNode(`${i * j}`);
  16. td.appendChild(tdText);
  17. tr.appendChild(td);
  18. }
  19. tableBody.appendChild(tr);
  20. }
  21. table.appendChild(tableBody);
  22. task1.appendChild(table);
  23. // Подсветить ячейку над которой находится курсор мыши.
  24. // Используйте события mouseover и mouseout, и style.backgroundColor для подсветки.
  25. // Читкоды:
  26. // в обработчик события в качестве this передается элемент, на котором событие произошло;
  27. // td.onmouseover = function (event) {
  28. // console.log(this, event) //event - это объект с информацией о событии,
  29. // //передается первым параметром в обработчик события.
  30. // }
  31. // Внимание: :hover это читерство :-)
  32. let tdarr = document.querySelectorAll("td");
  33. tdarr.forEach((tdMove) => (tdMove.onmousemove = function () {
  34. this.style.backgroundColor = "gray";
  35. }));
  36. tdarr.forEach((tdOut) => (tdOut.onmouseout = function () {
  37. this.style.backgroundColor = "transparent";
  38. }));
  39. // Подсветить строку и столбец,в которой находится подсвеченная ячейка.
  40. // Используйте parentElement (родительский элемент элемента DOM), и список его детей: children.
  41. // Читкоды:
  42. // * в обработчик события в качестве this передается элемент, на котором событие произошло;
  43. // * у td есть свойство cellIndex, в котором лежит номер ячейки;
  44. // * у tr, аналогично есть свойство rowIndex - номер строки;
  45. tdarr.forEach((tdMove) => (tdMove.onmousemove = function () {
  46. this.parentElement.style.backgroundColor = "lightgray";
  47. let index = this.cellIndex;
  48. let column = document.querySelectorAll("tr");
  49. column.forEach((columns) => (columns.children[index].style.backgroundColor = "lightgray"));
  50. this.style.backgroundColor = "gray";
  51. }));
  52. tdarr.forEach((tdOut) => (tdOut.onmouseout = function () {
  53. this.parentElement.style.backgroundColor = "transparent";
  54. let index = this.cellIndex;
  55. let column = document.querySelectorAll("tr");
  56. column.forEach((columns) => (columns.children[index].style.backgroundColor = "transparent"));
  57. this.style.backgroundColor = "transparent";
  58. }));
  59. // Calc
  60. // Сделайте ваш калькулятор из первых занятий используя DOM и элементы input (в т. ч. type="number" для чисел)
  61. // Каждому полю ввода присвойте тот или иной id для обращения в обрабочтике события.
  62. // Для запуска раcчета используйте, например <button id="calc"> и
  63. // calc.onclick = function(){
  64. // alert((+someIdOfInput1.value) + (+someIdOfInput2.value)) //просуммировали два поля ввода с id someIdOfInput1 и someIdOfInput2
  65. // }
  66. // Также можете создать поле ввода для результата и записывать результат в value этого поля.
  67. const space2 = document.createElement('br');
  68. document.body.appendChild(space2);
  69. const task2 = document.createElement('div');
  70. task2.style.width = '300px';
  71. document.body.appendChild(task2);
  72. let calculator = document.createElement('form');
  73. task2.appendChild(calculator);
  74. task2.setAttribute('id', 'task-2');
  75. let result = document.createElement('input');
  76. result.style.width = '292px';
  77. result.style.height = '100px';
  78. result.style.color = 'gray';
  79. result.style.fontSize = '14px'
  80. calculator.appendChild(result);
  81. let inputField1 = document.createElement('input');
  82. inputField1.setAttribute('type', 'number');
  83. inputField1.style.width = '142px';
  84. inputField1.style.height = '50px';
  85. calculator.appendChild(inputField1);
  86. let inputField2 = document.createElement('input');
  87. inputField2.setAttribute('type', 'number');
  88. inputField2.style.width = '142px';
  89. inputField2.style.height = '50px';
  90. calculator.appendChild(inputField2);
  91. let sum = document.createElement('button');
  92. sum.innerText = '+';
  93. sum.style.width = '75px';
  94. sum.style.height = '50px';
  95. calculator.appendChild(sum);
  96. let sub = document.createElement('button');
  97. sub.innerText = '-';
  98. sub.style.width = '75px';
  99. sub.style.height = '50px';
  100. calculator.appendChild(sub);
  101. let mult = document.createElement('button');
  102. mult.innerText = '*';
  103. mult.style.width = '75px';
  104. mult.style.height = '50px';
  105. calculator.appendChild(mult);
  106. let divide = document.createElement('button');
  107. divide.innerText = '/';
  108. divide.style.width = '75px';
  109. divide.style.height = '50px';
  110. calculator.appendChild(divide);
  111. sum.onclick = () => {
  112. result.value = +inputField1.value + (+inputField2.value);
  113. };
  114. sub.onclick = () => {
  115. result.value = +inputField1.value - (+inputField2.value);
  116. };
  117. mult.onclick = () => {
  118. result.value = +inputField1.value * (+inputField2.value);
  119. };
  120. divide.onclick = () => {
  121. result.value = +inputField1.value / (+inputField2.value);
  122. };
  123. // Calc Live
  124. // Сделайте расчет живым, т. е. обновляющимся по событию oninput каждого поля ввода, влияющего на результат.
  125. // Нет смысла копировать одну и ту же калькуляцию, поэтому вначале задекларируйте функцию расчета,
  126. // а потом присвойте её в качестве обработчика события в каждом поле ввода:
  127. // function calc() {
  128. // result.value = (+input1.value) + (+input2.value)
  129. // }
  130. // input1.oninput = calc
  131. // input2.oninput = calc
  132. const space3 = document.createElement('br');
  133. document.body.appendChild(space3);
  134. const task3 = document.createElement('div');
  135. task3.style.width = '300px';
  136. document.body.appendChild(task3);
  137. let liveCalculator = document.createElement('form');
  138. task3.appendChild(liveCalculator);
  139. task3.setAttribute('id', 'task-3');
  140. let liveResult = document.createElement('input');
  141. liveResult.style.width = '292px';
  142. liveResult.style.height = '100px';
  143. liveResult.style.color = 'gray';
  144. liveResult.style.fontSize = '14px'
  145. liveCalculator.appendChild(liveResult);
  146. let liveInputField1 = document.createElement('input');
  147. liveInputField1.setAttribute('type', 'number');
  148. liveInputField1.style.width = '142px';
  149. liveInputField1.style.height = '50px';
  150. liveCalculator.appendChild(liveInputField1);
  151. let liveInputField2 = document.createElement('input');
  152. liveInputField2.style.width = '142px';
  153. liveInputField2.style.height = '50px';
  154. liveCalculator.appendChild(liveInputField2);
  155. let liveSum = document.createElement('button');
  156. liveSum.innerText = '+';
  157. liveSum.style.width = '75px';
  158. liveSum.style.height = '50px';
  159. liveSum.style.backgroundColor = 'yellow';
  160. liveSum.style.fontWeight = '900';
  161. liveCalculator.appendChild(liveSum);
  162. let liveSub = document.createElement('button');
  163. liveSub.innerText = '-';
  164. liveSub.style.width = '75px';
  165. liveSub.style.height = '50px';
  166. liveSub.style.backgroundColor = 'blue';
  167. liveSub.style.fontWeight = '900'
  168. liveCalculator.appendChild(liveSub);
  169. let liveMult = document.createElement('button');
  170. liveMult.innerText = '*';
  171. liveMult.style.width = '75px';
  172. liveMult.style.height = '50px';
  173. liveMult.style.backgroundColor = 'red';
  174. liveCalculator.appendChild(liveMult);
  175. let liveDivide = document.createElement('button');
  176. liveDivide.innerText = '/';
  177. liveDivide.style.width = '75px';
  178. liveDivide.style.height = '50px';
  179. liveDivide.style.backgroundColor = 'green';
  180. liveCalculator.appendChild(liveDivide);
  181. liveSum.onclick = () => {
  182. liveResult.value = +liveInputField1.value + (+liveInputField2.value);
  183. };
  184. liveSub.onclick = () => {
  185. liveResult.value = +liveInputField1.value - (+liveInputField2.value);
  186. };
  187. liveMult.onclick = () => {
  188. liveResult.value = +liveInputField1.value * (+liveInputField2.value);
  189. };
  190. liveDivide.onclick = () => {
  191. liveResult.value = +liveInputField1.value / (+liveInputField2.value);
  192. };
  193. liveInputField1.oninput = () => {
  194. liveResult.value = liveInputField1.value;
  195. liveInputField2 = liveInputField2 || 0;
  196. };
  197. liveInputField2.oninput = () => {
  198. liveInputField1 = liveInputField1 || 0;
  199. liveResult.value = liveInputField2.value;
  200. }