Шта? Почему JavaScript ведёт себя так странно?
Именно такая реакция возникла у меня, когда увидел следующее:
<button id="button">OK</button>
<script>
function nazhmiNaKnopku(event){
alert("rezultat");
}
let button = document.getElementById("button");
button.addEventListener("click", nazhmiNaKnopku);
</script>
Если кликнуть на кнопку, то браузер (Google Chrome) выведет "rezultat". Но вот при таком коде:
<button id="button">OK</button>
<script>
function nazhmiNaKnopku(event){
alert("rezultat");
}
let button = document.getElementById("button");
button.addEventListener("click", nazhmiNaKnopku);
document.body.innerHTML += "<br>";
</script>
ничего выводиться не будет. Собщений об ошибке тоже нет. Почему браузер так себя ведёт? |
Цитата:
|
jaroslav.tavgen,
https://learn.javascript.ru/basic-do...yaet-perezapis |
Цитата:
Цитата:
UPDATE: а почему при перезаписи страницы (я так понял, что при innerHTML страница стирается и перезаписывается) не ставятся обработчики событий? |
Цитата:
в данном случае страницы Цитата:
|
Цитата:
document.body.innerHTML += "<br>"; это тоже самое, что document.body.innerHTML = document.body.innerHTML + "<br>"; т. е. если прочитать document.body.innerHTML, то оттуда ничего не известно об обработчиках событии. Если вы хотите менять содержимое <body> через innerHTML, то добавляйте обработчики на document.body. Пример...
<button id="button">OK</button>
<script>
function nazhmiNaKnopku(event){
if(event.target.closest("button"))
alert("rezultat");
}
document.body.addEventListener("click", nazhmiNaKnopku);
document.body.innerHTML += "<br>";
</script>
|
| Часовой пояс GMT +3, время: 21:38. |