Click Event listener
Всем привет. Хотел сделать Event Click для каждой ечейки <table>, но возникла такая проблема:
window.onload=function () {
var size = 10;
makeBoard(size,10);
var table = "<table>";
for (var x = 0; x < size; x++){
table += "<tr>";
for (var y = 0; y < size; y++){
table += "<td>"+board[x][y]+"</td>";
}
table += "</tr>";
}
table += "</table>";
document.getElementById("main-story").innerHTML = table;
document.getElementsByTagName("td").addEventListener("click", function()
{document.getElementById("td").innerHTML = "YOU CLICKED ME!";});
}
Консоль выдаёт: TypeError: document.getElementsByTagName(...).addEventListene r is not a function. В чём ошибка? |
Цитата:
|
f1kus,
document.getElementsByTagName(...) - это коллекция объектов, ей нельзя назначить обработчик. Нужно назначать обработчик каждому элементу коллекции document.getElementsByTagName(...)[i] А это document.getElementById("td").innerHTML = "YOU CLICKED ME!"; - вообще неправильно. Во-первых, у вас нет id у <td>, во-вторых - id должен быть уникальным А это что такое? makeBoard(size,10); |
У HTMLCollection нет метода "addEventListene".
Чтобы повесить обработчик на каждую ячейку нужно обойти коллекцию в цикле и в нем же повесить на каждый элемент этот обработчик. Либо повесить обработчик на родительский эл. и смотреть цель (target) события. |
getElementsByTagName("td") возвращает коллекцию, а у коллекции нету данного метода, самый простой и очевидный способ это пробежаться по коллекции циклом.
|
| Часовой пояс GMT +3, время: 05:37. |