我是否可以通过onload函数在javascript中监听onblur或onclick事件?而不是在元素本身中这样做。
<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>
答案 0 :(得分:16)
你这样做的方式很好,但是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");
}
}
您还需要监控IE&lt; 9,因为那些V使用attachEvent()
。像这样附加事件,因此它可以与恐龙浏览器一起使用:
if(button.addEventListener){
button.addEventListener('click', function() { alert("alert");});
} else if(button.attachEvent){ // IE < 9 :(
button.attachEvent('onclick', function() { alert("alert");});
}
根据您的修改,此应该有效 works just fine。
<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
事件。
答案 1 :(得分:1)
更好的方式是使用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>
使用这几行并不重要。你可以将它放在头部或体内。
答案 2 :(得分:0)
动态添加事件处理程序的更好方法是使用像jQuery这样的JavaScript库,因为它会抽象出任何特定于浏览器的细节。
答案 3 :(得分:0)
在评论部分继续我的对话......
@simplified,试着把它放在&lt;头&gt;你的网页
<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
答案 4 :(得分:0)
<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>