Метод DOM в if, ошибка
Есть довольно большое количество кнопок. Приходится для каждой прописывать document.getElementById("id").onclick = function;
в этой ф-ции значение переменной для этой кнопки меняется на true и только потом вызывается реальная функция для этой кнопки. Можно ли как-то сократить этот процесс, убрать кучу булевых переменных? Я попробовал так, но что-то не работает. if(document.getElementById("id").onclick) { alert ("test"); } |
Цитата:
Переведи. А еще лучше - сделай таки тестовый пример. Что у тебя есть... И что нужно получить... |
Т.к. есть несколько кнопок, то для того, чтобы узнать какая из них была нажата последней, т.е. какую функцию вызвать, я использую булевые переменные для каждой кнопки. Это офигенно громоздко и неудобно. Поэтому и попросил поправить мой if, т.к. я надеюсь событие можно прям в нем прописать.
|
Цитата:
Как вариант, менять значение класса или какого-то атрибута у кнопок, дабы понять кто из них "последняя нажатая"... P.S. Я так понимаю примера тестового мы так и не увидим? |
Если я понял о чём речь.)
<script> var actionList = { func1: function(){ alert('func1') }, func2: function(){ alert('func2') }, funcn: function(){ //... }, }; document.onclick = function(event){ var target = event.target; if(target.tagName == 'BUTTON' && target.className == 'button-class'){ var action = target.getAttribute('data-action'); if(action && actionList[action]) actionList[action](); else console.log('No action: "' + action +'".', event); } } </script> <button class="button-class" data-action="func1">1</button> <button class="button-class" data-action="func2">2</button> |
ksa, не совсем понял, зачем здесь нужен тестовый пример, я описал задачу и сказал, что не могу найти решение.
Aetae, да, это то, что надо. Спасибо большое! Только не совсем понимаю для чего нужен if, проверяющий action && actionList[action], и соответствующий ему else. |
Еще вопрос. Никак не могу найти ошибку.
var icoSystem=document.createElement("img"); icoSystem.setAttribute("src","icoSystem.png"); UPD. Решено. надо было привязать к DOM с помощью appendChild. |
Цитата:
|
levshkatov, обработка ошибок. У кнопки по какой-то причине может не оказаться атрибута "data-action", или в actionList может не оказаться нужной функции.
|
Aetae,
document.onclick это уже слишком. Лучше обернуть блок кнопок с id и на него вешать обработку событий var target = event.target; здесь нет обработчика для ИЕ |
Часовой пояс GMT +3, время: 18:07. |