Показать сообщение отдельно
  #1 (permalink)  
Старый 01.07.2020, 07:33
Аспирант
Отправить личное сообщение для Vahan60 Посмотреть профиль Найти все сообщения от Vahan60
 
Регистрация: 20.04.2020
Сообщений: 46

Не считывается индекс
Доброго времени суток всем.
Такой вот код:

// создаём таблицу 3Х3

let elem = document.querySelector('#elem');
createTable(elem, 3, 3);

function createTable(parent, cols, rows) {
	let table = document.createElement('table');
	
	for (let i = 0; i < rows; i++) {
		let tr = document.createElement('tr');
		
		for (let j = 0; j < cols; j++) {
			let th = document.createElement('th');
			th.className = "unit"; // присваиваем className
			tr.appendChild(th)
		};
		table.appendChild(tr)
	};
	parent.appendChild(table)
};

const alpha = ["0", "1", "2", "3", "4", "5", "6", "7", "8"];
const unit = document.getElementsByClassName("unit"); 

// вставляем элементы массива alpha в ячейки таблицы
for (i = 0; i < alpha.length; i++) {
	unit[i].append(alpha[i])
	};

let dial = document.getElementById("dial"); // находим диалоговое окно в index.html
let but = document.getElementById("but");   // находим кнопку закрытия окна в index.html
let activeUnit = -1;

for (i = 0; i < alpha.length; i++){
      unit[i].addEventListener("click", function() {
	  activeUnit = i; // запоминаем индекс ячейки по которому кликнули
	  console.log(activeUnit);
      dial.show();
      });

      but.addEventListener("click", function() {
      dial.close();
      })
};


Он должен создать таблицу, расставить по её ячейкам элементы массива, а затем (по клику на ту или другую ячейку) открыть диалоговое окно с соответствующим содержанием.
Для этого объявлена переменная activeUnit. И чтобы проверить, запомнил ли код по какой ячейке таблицы произведен клик, вывожу в консоль console.log(activeUnit).
Не запомнил. Вместо индекса ( от 0 до 8) в консоли печатается количество ячеек (9).
Более того, когда я закомментировал строки 30 и 31, то вместо того, чтобы выдать ошибку, код продолжает работать как ни в чём не бывало. По клику на ячейку открывает диалоговое окно.
Что за глюки?
Ответить с цитированием