Добавление прослушивателей событий на элементах - Javascript
Есть ли способы прослушать onblur или onclick события в javascript из функции onload? вместо того, чтобы делать это в самом элементе.
<input type="button" id="buttonid" value="click" onclick="func()">
чтобы стать чем-то вроде
function onload() {
var button = document.getElementById("buttonid");
button.addEventListener("onclick", function() { alert("alert");});
}
ИЗМЕНИТЬ
<html>
<head>
<script>
function onload() {
var button = document.getElementById("buttonid");
if(button.addEventListener){
button.addEventListener("click", function() { alert("alert");});
} else {
button.attachEvent("click", function() { alert("alert");});
};
};
window.onload = onload;
</script>
</head>
<body>
<input type="button" id="buttonid" value="click">
</body>
</html>
ОБНОВЛЕНИЕ
<script type="text/javascript">
function on_load() {
var button = document.getElementById("buttonid");
if(button.addEventListener){
button.addEventListener("click", function() { alert("alert");});
} else {
button.attachEvent("click", function() { alert("alert");});
};
};
window.onload = on_load();
</script>
Ответы
Ответ 1
То, как вы это делаете, прекрасно, но ваш слушатель событий для события click
должен выглядеть следующим образом:
button.addEventListener("click", function() { alert("alert");});
Обратите внимание, что событие click
должно быть прикреплено с помощью "click"
, а не "onclick"
.
Вы также можете попробовать сделать это по-старому:
function onload() {
var button = document.getElementById("buttonid");
// add onclick event
button.onclick = function() {
alert("alert");
}
}
Обновление 1
Вам необходимо также контролировать для IE < 9, потому что эти Vs используют attachEvent()
. Прикрепите это событие так, чтобы оно работало с браузерами динозавров:
if(button.addEventListener){
button.addEventListener('click', function() { alert("alert");});
} else if(button.attachEvent){ // IE < 9 :(
button.attachEvent('onclick', function() { alert("alert");});
}
Обновление 2
На основе вашего редактирования этот должен работать работает просто отлично.
<html>
<head>
<script type="text/javascript">
function init() {
var button = document.getElementById("buttonid");
if(button.addEventListener){
button.addEventListener("click", function() { alert("alert");}, false);
} else if(button.attachEvent){
button.attachEvent("onclick", function() { alert("alert");});
}
};
if(window.addEventListener){
window.addEventListener("load", init, false);
} else if(window.attachEvent){
window.attachEvent("onload", init);
} else{
document.addEventListener("load", init, false);
}
</script>
</head>
<body>
<input type="button" id="buttonid" value="click">
</body>
</html>
Пожалуйста, не используйте window.onload = on_load();
, это предотвратит запуск всех других прослушивателей событий onload
, или вы рискуете, чтобы прослушиватель событий был перезаписан. Рассмотрим прикрепление события onload
так, как я предлагаю выше.
Ответ 2
Лучший способ использования DOM (отлично работает), как это.
Firs записывает вашу функцию/класс и использует ее в:
document.addEventListener('DOMContentLoaded', function(){
// put here code
});
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
function myFunc(){ alert('Hellow there!'); }
document.addEventListener('DOMContentLoaded', function(){
document.getElementById('mybtn').addEventListener('click', myFunc);
});
</script>
</head>
<body>
<button id="mybtn">Cklik!</button>
</body>
</html>
Ответ 3
Лучшим способом динамического добавления обработчиков событий будет использование библиотеки JavaScript, такой как jQuery, поскольку она абстрагирует любые детали, специфичные для браузера.
Ответ 4
чтобы продолжить мой разговор в разделе комментариев...
@simplified, попробуйте поместить это в <head> вашей страницы
<script type="text/javascript">
function my_onload() {
var button = document.getElementById("buttonid");
if(button.addEventListener){
button.addEventListener("click", function() { alert("alert");}, true);
}else{
button.attachEvent("click", function() { alert("alert");});
};
};
window.onload = my_onload;
</script>
и посмотрим, что произойдет. также, пожалуйста, сообщите нам, какой браузер вы используете.
https://developer.mozilla.org/en/DOM/element.addEventListener
Ответ 5
<script>
var click = document.getElementById("click");
click.addEventListener("click", function() {
var required = document.getElementById("required").value;
if (required===null || required==="") {
alert("Please make sure all required field are completed");
}
else {
alert("Thank you! \nYour sumbission has been accepted and you will receive a conformation email shortly! \nYou will now be taken to the Home page.");
}
});
</script><html>
<body>
<div id="popup">
<textarea cols="30" rows="2" name="required" id="required"></textarea>
<input type="submit" id="click" value="Submit">
<input type="reset" value="Reset" />
</div>
</body>
</html>