script.js 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //DOM
  2. /* Таблица умножения
  3. Сделать таблицу умножения, используя DOM createElement
  4. и innerText. Создайте таблицу, вложенные строки и ячейки в циклах. */
  5. let root = document.querySelector('.root');
  6. for (let i = 0; i < 10; i++){
  7. let tr = document.createElement('tr');
  8. root.append(tr);
  9. for (let k = 0; k < 10; k++){
  10. let td = document.createElement('td');
  11. if (i === 0) {
  12. td.innerText = k;
  13. tr.append(td);
  14. } else if (k === 0) {
  15. td.innerText = i;
  16. tr.append(td);
  17. } else {
  18. td.innerText = i * k;
  19. tr.append(td);
  20. }
  21. }
  22. }
  23. /* Подсветить ячейку над которой находится курсор мыши.
  24. Используйте события mouseover и mouseout,
  25. и style.backgroundColor для подсветки.
  26. */
  27. let td = document.querySelectorAll('td');
  28. /* td.forEach((i) => {
  29. i.onmouseover = () => i.style.backgroundColor = 'yellow';
  30. i.onmouseout = () => i.style.backgroundColor = '';
  31. }) */
  32. /*
  33. Подсветить строку и столбец,
  34. в которой находится подсвеченная ячейка. Используйте parentElement (родительский элемент элемента DOM), и список его детей: children.
  35. Читкоды:
  36. в обработчик события в качестве this передается элемент, на котором событие произошло;
  37. у td есть свойство cellIndex, в котором лежит номер ячейки;
  38. у tr, аналогично есть свойство rowIndex - номер строки; */
  39. td.forEach((item, i) => {
  40. item.onmouseover = (e) => {
  41. item.style.backgroundColor = 'yellow';
  42. item.parentNode.style.backgroundColor = 'green';
  43. if (td[i].cellIndex === e.target.cellIndex){
  44. for (let i = 0; i < td.length/10; i++ ){
  45. console.log(td[i].cellIndex)
  46. };
  47. };
  48. }
  49. item.onmouseout = () => {
  50. item.style.backgroundColor = '';
  51. item.parentNode.style.backgroundColor = '';
  52. }
  53. })
  54. //Calc + Calc Live
  55. let fuel = document.querySelector('[name = "liters"]'),
  56. way = document.querySelector('[name = "km"]'),
  57. checkLiter = document.querySelector('#liter'),
  58. checkUah = document.querySelector('#uah'),
  59. priceInput = document.querySelector('.price__item'),
  60. price = document.querySelector('[name = "price"]'),
  61. reset = document.querySelector('.btn'),
  62. outer = document.querySelector('.outer');
  63. function calcMyConsumption(fuelLiters, kmWay, pricePerLiter) {
  64. if (fuelLiters && kmWay && pricePerLiter) {
  65. pricePerLiter = price.value;
  66. const result = (fuelLiters / kmWay) * 100 * pricePerLiter;
  67. outer.textContent = `Ваш затраты на 100км пути ${result.toFixed(2)} грн`;
  68. reset.style.display = 'block';
  69. } else {
  70. const result = (fuelLiters / kmWay) * 100;
  71. outer.textContent = `Ваш расход на 100км пути ${result.toFixed(2)} литров`;
  72. reset.style.display = 'block';
  73. }
  74. }
  75. checkLiter.addEventListener('change', () => {
  76. if (checkLiter.checked && fuel.value && way.value) {
  77. priceInput.style.display = 'none';
  78. calcMyConsumption(fuel.value, way.value);
  79. } else {
  80. outer.textContent = `Заполните все формы`;
  81. }
  82. })
  83. checkUah.addEventListener('change', () => {
  84. if (checkUah.checked && fuel.value && way.value ) {
  85. priceInput.style.display = 'block';
  86. price.value = '';
  87. outer.textContent = `Внесите цену`;
  88. price.addEventListener('input', () => calcMyConsumption(fuel.value, way.value, price));
  89. } else {
  90. outer.textContent = `Заполните данные формы`;
  91. }
  92. })
  93. reset.addEventListener('click', () => {
  94. fuel.value = '';
  95. way.value = '';
  96. price.value = '';
  97. outer.textContent = '';
  98. priceInput.style.display = 'none';
  99. reset.style.display = 'none';
  100. })