Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.10.2017, 00:40
Новичок на форуме
Отправить личное сообщение для f1kus Посмотреть профиль Найти все сообщения от f1kus
 
Регистрация: 03.10.2017
Сообщений: 1

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.
В чём ошибка?
Ответить с цитированием
  #2 (permalink)  
Старый 03.10.2017, 06:38
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Сообщение от f1kus
В чём ошибка?
Регистрируй событие клика на table.
Ответить с цитированием
  #3 (permalink)  
Старый 03.10.2017, 10:52
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

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

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

Последний раз редактировалось Dilettante_Pro, 03.10.2017 в 10:58.
Ответить с цитированием
  #4 (permalink)  
Старый 03.10.2017, 10:53
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,708

У HTMLCollection нет метода "addEventListene".
Чтобы повесить обработчик на каждую ячейку нужно обойти коллекцию в цикле и в нем же повесить на каждый элемент этот обработчик.
Либо повесить обработчик на родительский эл. и смотреть цель (target) события.
Ответить с цитированием
  #5 (permalink)  
Старый 03.10.2017, 11:00
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ember_js click event polin11 Библиотеки/Тулкиты/Фреймворки 2 12.02.2017 10:26
javascript on click или event - Контроль действия пользователя. Ffendlix Events/DOM/Window 3 12.09.2012 12:28
event + setTimeout fsingle Events/DOM/Window 2 02.05.2012 09:07
click() event bdfy1 Javascript под браузер 3 02.03.2012 11:56
Click Event на контейнер div cooli0 Events/DOM/Window 2 19.02.2010 00:18