Метод 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, время: 23:20. |