Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Click Event listener (https://javascript.ru/forum/events/70788-click-event-listener.html)

f1kus 03.10.2017 00:40

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.
В чём ошибка?

Rasy 03.10.2017 06:38

Цитата:

Сообщение от f1kus
В чём ошибка?

Регистрируй событие клика на table.

Dilettante_Pro 03.10.2017 10:52

f1kus,
document.getElementsByTagName(...) - это коллекция объектов, ей нельзя назначить обработчик.
Нужно назначать обработчик каждому элементу коллекции document.getElementsByTagName(...)[i]

А это
document.getElementById("td").innerHTML = "YOU CLICKED ME!";
- вообще неправильно.
Во-первых, у вас нет id у <td>, во-вторых - id должен быть уникальным

А это что такое?
makeBoard(size,10);

Nexus 03.10.2017 10:53

У HTMLCollection нет метода "addEventListene".
Чтобы повесить обработчик на каждую ячейку нужно обойти коллекцию в цикле и в нем же повесить на каждый элемент этот обработчик.
Либо повесить обработчик на родительский эл. и смотреть цель (target) события.

Skipp 03.10.2017 11:00

getElementsByTagName("td") возвращает коллекцию, а у коллекции нету данного метода, самый простой и очевидный способ это пробежаться по коллекции циклом.


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