123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- 'use strict';
- //DOM: ДЗ
- //Таблица умножения
- //Сделать таблицу умножения, используя DOM createElement и innerText. Создайте таблицу,
- //вложенные строки и ячейки в циклах.Должно получится что - то вроде этого:
- const table = document.createElement('table');
- for (let i = 0; i < 10; i++) {
- const tr = document.createElement('tr');
- for (let j = 1; j < 11; j++) {
- const td = document.createElement('td');
- td.id = String(i) + String(j);
- td.dataset.col = String(i);
- if (j === 10) {
- td.textContent = String(i);
- tr.prepend(td);
- continue;
- }
- td.textContent = String((i === 0 ? 1 : i) * j);
- tr.append(td);
- }
- table.append(tr);
- }
- document.body.append(table);
- //Подсветить ячейку
- //над которой находится курсор мыши. Используйте события mouseover и mouseout,
- //и style.backgroundColor для подсветки.
- //Читкоды:
- //в обработчик события в качестве this передается элемент, на котором событие произошло;
- //Внимание: :hover это читерство :-
- // let tdId;
- // table.onmouseover = function (e): void {
- // const {tagName,id} = e.target
- // const oldTd = document.getElementById(tdId)
- // if (oldTd) oldTd.style.backgroundColor = 'grey'
- // if (tagName === "TD") {
- // const td = document.getElementById(id)
- // td.style.backgroundColor = 'green'
- // tdId = id
- // } //event - это объект с информацией о событии,
- // //передается первым параметром в обработчик события.
- // }
- // Подсветить строку и столбец,
- //в которой находится подсвеченная ячейка. Используйте parentElement
- //(родительский элемент элемента DOM), и список его детей: children.
- //Читкоды:
- //в обработчик события в качестве this передается элемент, на котором событие произошло;
- //у td есть свойство cellIndex, в котором лежит номер ячейки;
- //у tr, аналогично есть свойство rowIndex - номер строки;
- table.onmouseover = function ({
- target: {
- cellIndex,
- tagName,
- id,
- dataset: { col },
- },
- }) {
- this.childNodes.forEach((element) => {
- element.childNodes.forEach((td) => {
- if (td.cellIndex === cellIndex) {
- td.style.backgroundColor = 'yellow';
- } else if (td.dataset.col === col) {
- td.style.backgroundColor = 'orange';
- } else {
- td.style.backgroundColor = 'grey';
- }
- });
- });
- if (tagName === 'TD')
- document.getElementById(id).style.backgroundColor = 'green';
- };
- //Calc
- //Сделайте ваш калькулятор из первых занятий используя DOM и элементы input
- //(в т.ч.type = "number" для чисел) Каждому полю ввода присвойте тот или иной id для обращения в обрабочтике события.
- //Для запуска раcчета используйте, например < button id = "calc" > и
- //Также можете создать поле ввода для результата и записывать результат в value этого поля.
- const btnSubmit = document.getElementById('submitCalc');
- const resultP = document.getElementById('result');
- btnSubmit.addEventListener('click', updateValue);
- function updateValue(e) {
- const values = e.target.parentNode.children;
- resultP.textContent = String(+values[0].value * +values[1].value);
- }
- //Calc Live
- //Сделайте расчет живым, т. е. обновляющимся по событию oninput каждого поля ввода,
- //влияющего на результат.Нет смысла копировать одну и ту же калькуляцию,
- //поэтому вначале задекларируйте функцию расчета, а потом присвойте её в
- //качестве обработчика события в каждом поле ввода:
- const firstInput = document.getElementById('first');
- const secondInput = document.getElementById('second');
- const hadleInputs = (e, inputValue) => {
- resultP.textContent = String(+e.target.value * +inputValue.value);
- };
- firstInput.addEventListener('change', (e) => hadleInputs(e, secondInput));
- secondInput.addEventListener('change', (e) => hadleInputs(e, firstInput));
|