Во-первых, использование bgColor в качестве имени пользовательской функции вызовет ошибку типа , поскольку это ключевое слово зарезервировано для JS (свойство объекта), хотя и устарело.
Second -> var x = document.getElementsByTagName ("button"). Name; явно выдаст ошибку x не определено , потому что этот синтаксис без ' .name 'должен возвращать все кнопки на странице в массиве, при этом вы можете l oop просматривать и получать доступ к свойствам отдельной кнопки, например. name
Поэтому мы используем это вместо var x = document.getElementsByTagName ("button") , которое возвращает массив кнопок на странице.
* 1022 Как говорится, давайте посмотрим, как мы можем изменить ваш код для достижения того, что вы ищете:
HTML:
<button type="button" name="Tom" onclick="buttonBgColor(event)"> Tom</button>
<button type="button" name="Dick" onclick="buttonBgColor(event)"> DicK </button>
<button type="button" name="Harry" onclick="buttonBgColor(event)"> Harry </button>
JS:
function buttonBgColor(e) {
const buttons = document.getElementsByTagName("button").name;
for(button of buttons){
const current_button = e.target;
if(current_button.name == 'Tom'){
current_button.style.backgroundColor = 'lightgray'
}else if(current_button.name == 'Dick'){
current_button.style.backgroundColor = 'lightgreen'
}else if(current_button.name == 'Harry'){
current_button.style.backgroundColor = 'lightyellow'
}
}
}
Этот метод полезен, потому что при условии, что у вас есть две кнопки с одинаковым именем, скажем 'Tom' , и все же вы хотите, чтобы один из них сделал что-то дополнительное, не меняя цвета фона, вы можете сослаться на их ID , чтобы достичь этого, используя e.target.id или current_button.id в условии, чтобы подключить другой обработчик для этой конкретной 'Tom' кнопки .
Надеюсь, это поможет.