я удивлен, сравнивая следующие случаи:HTML-изменения с элементами element.setAttribute ("onclick", "alert ('Test');") и element.onclick = "alert ('Test');";
button = document.getElementById("addSugerenciaButton");
if (button != null) {
button.onclick = "post_to_url('" + addSugerenciaURL + "', idBuzon', '" + id + "');";
}
button = document.getElementById("removeBuzonButton");
if (button != null) {
button.onclick = function() {
if (!confirm(removeSugerenciaMessage)) {
return false;
};
post_to_url(removeBuzonURL, 'idBuzon', id);
};
}
button = document.getElementById("editBuzonButton");
if (button != null) {
button.setAttribute("onclick","post_to_url('" + editBuzonURL + "', 'idBuzon', '" + id + "');");
}
Только последний появился, чтобы изменить HTML (по крайней мере, осматривая с Firebug) в то время как остальные, хотя и работает должным образом тоже, они не показывают какое-либо событие OnClick в элементе editBuzonButton.
Любые идеи, почему это происходит?
Вы совершенно правы, так оно реализовано в JQuery и Prototype, поэтому, пожалуйста, позвольте мне изменить свой вопрос. –
Он не совсем прав. Нет ничего плохого в добавлении обработчика событий, использующего свойство, а не 'addEventListener' /' attachEvent', если вы знаете, что вам не понадобятся несколько обработчиков событий. На самом деле это часто предпочтительнее: во-первых, он обрабатывается почти одинаково в браузерах (кроме требования IE о доступе к объекту события через 'window.event'); во-вторых, 'this' всегда является ссылкой на исходный элемент (в отличие от' attachEvent'); в-третьих, предотвращение действия по умолчанию для события является вопросом «return false», а не 'evt.preventDefault()'/'evt.returnValue = false'. –
@ Тит: Я не имел в виду, что с этим что-то не так; Я имел в виду, что это не лучший способ сделать это. – SLaks