Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Работает. Но выдает "Uncaught TypeError" (https://javascript.ru/forum/events/80054-rabotaet-no-vydaet-uncaught-typeerror.html)

Vahan60 22.04.2020 11:16

Работает. Но выдает "Uncaught TypeError"
 
В консоли выдаёт ошибку "Uncaught TypeError: Cannot read property 'addEventListener' of undefined at test13.js:76"ю
Но при этом все работает (пока работает) как надо.
Чего же консоль на меня ругается?

// кнопка Fullscreen

let btn = document.getElementById ("btn");    
let bd = document.querySelector ("body") 
 
     btn.addEventListener ("click", function (event) {
       bd.requestFullscreen();
       let target = event.target;
       target.style.background = "black";
          });

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

let elem = document.querySelector ("#elem");
createTable (elem, 7, 1);

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");
			tr.appendChild(th);
		};
		table.appendChild(tr);
	};
	parent.appendChild(table);
	//return table;
};

// закрашиваем ячейки таблицы

const allProperty = [
    ["#dc143c", "SF", "#ff0000", "SF", "#ff6347", "SF"],
	["#ff4500", "SF", "#ffd700", "SF", "#ffff00", "SF"],
	["#008000", "SF", "#0bda51", "SF", "#00ff00", "SF"],
    ["#000080", "sound file SF", "#0000ff", "SF", "#79d8ff", "SF" ],
	["#5a005a", "SF", "#ff00ff", "SF", "#d2a8d4", "SF"],
	["#800000", "sound file SF", "#964b00", "SF", "#cc7722", "SF" ],
	["#010101", "SF", "#ada8a5", "SF", "#ffffff", "SF"]
	];

//let i;
let table = elem.querySelector ("table"); 
let unit = table.querySelectorAll ("th");

for (let i = 0; i < 7; i++){
     unit[i].style.backgroundColor = allProperty[i][0];
};
	
	console.log (unit);

// создаём диалоговое окно

let dialog = document.querySelector("dialog");
let unitOkno = dialog.querySelectorAll ("td");

 for (let i = 0; i < 7; i++) {
  unit[i].addEventListener ("click", function() { 
  dialog.show();
  unitOkno[0].style.backgroundColor = allProperty[i][0];
  unitOkno[1].style.backgroundColor = allProperty[i][2];
  unitOkno[2].style.backgroundColor = allProperty[i][4];
  });
};

  document.querySelector("#close").onclick = function() {
  dialog.close();
};

// клик по unitOkno

   for (let i = 0; i < 7; i++) {
	unitOkno[i].addEventListener ("click", function() { 
    dialog.style.backgroundColor =  unitOkno[i].style.backgroundColor;
	});
   };

рони 22.04.2020 11:42

Цитата:

Сообщение от Vahan60
Cannot read property 'addEventListener' of undefined at test13.js:76"

значит в диалоге нет ячеек, строка 58. либо ячеек только 3 строка 75.

Vahan60 22.04.2020 14:49

Точно. Поменял i<7 на i<3 и TypeError пропал.
Спасибо огромное.
Но эта смена (i<7 на i<3) грозит мне проблемами в дальнейшем. (((

рони 22.04.2020 14:56

Vahan60,
может не число 3, а unitOkno.length

Vahan60 23.04.2020 07:40

Да. Так будет лучше. Еще раз огромное спасибо.


Часовой пояс GMT +3, время: 17:20.