Изменить: мой вопрос, возможно, был слишком широким (все еще изучающим), но я все же получил очень полезные ответы. Так что спасибо вам большое за ваш вклад. Я также исправил свой код, чтобы включить передачу "event".
Это мой первый вопрос, заданный здесь, поэтому я немного нервничаю...
Здесь мы идем: Каковы наилучшие способы (относительно лучшей практики, скорости, совместимости и т.д.) для управления щелчками на кнопках и позволяют им запускать разные функции?
При исследовании этого вопроса я нашел пример на Eloquent JavaScript и взял это в качестве основы.
Затем я расширил его, используя "mapper" (это правильный термин?), чтобы найти нужную функцию, в зависимости от идентификатора кнопки, которая запускает событие.
Вот код:
// functions I want to trigger
function one(e) {
alert("You clicked " + e.textContent);
}
function two(e) {
alert("You clicked " + e.textContent);
}
// mapper object to hold my functions
var buttonMap = {
b_one: function(event) {
one(event.target)
},
b_two: function(event) {
two(event.target)
}
}
// Event Listener
var buttonClick = document.body.addEventListener('click', function(event) {
if (event.target.nodeName == "BUTTON") {
var tar = event.target.id;
buttonMap[tar](event)
}
});
<button id="b_one" type="button">Button One</button>
<button id="b_two" type="button">Button Two</button>