Шта? Почему 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, время: 07:51. |