Причина, по которой ваша функция click
не была вызвана, заключается в том, что код JavaScript в вашем атрибуте выполняется в контексте, где атрибуты элемента копируются в контекст кода JavaScript атрибута. Таким образом, ваша click
функция была скрыта за click
методом элемента .
См. MDN's Обработчики onevent DOM: HTML атрибуты onevent
Вы можете воспроизвести этот эффект любым свойством / методом / et c. элемента DOM кнопки.
Например, следующая кнопка при нажатии вызовет ошибку: Uncaught TypeError: innerHTML is not a function
<script>
function innerHTML(el) {
console.log(el.innerHTML);
}
</script>
<button onclick="innerHTML(this)">Click Me</button>
Обратите внимание, что этот эффект применяется только к JavaScript в строке атрибута. Если мы используем имя функции, которое не пересекается с атрибутом элемента DOM, мы можем безопасно избежать такого рода ошибок:
<script>
function handleClick(el) {
// We can safely call the innerHTML function from within this function
innerHTML(el);
}
function innerHTML(el) {
console.log(el.innerHTML);
}
</script>
<button onclick="handleClick(this)">Click Me</button>