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, время: 19:30. |