JavaScript 动态添加事件
<div id="external_links1">
<a href="http://www.google.com" onclick="return confirm('You are going to visit: ' + this.href);">1</a>
<a href="#4">2</a>
<a href="#4">3</a>
<a href="#">4</a>
</div>
<script type="text/javascript">
//$("#external_links a").click(function() {
// return alert("You are going to visit:" + this.href);
//}); //jQuery写法
function cc() {
var external_links = document.getElementById('external_links1');
var links = external_links.getElementsByTagName('a');
for (var i = 0; i < links.length; i++) {
var link = links.item(i);
link.onclick = function() {
return confirm('You are going to visit: ' + this.href);
};
}
}
</script>
脚本写在head标签的部位,在IE下body标签的onload中调用这个cc()函数,事件不能够执行,但在FF下可以
onload事件在FF和IE的区别:IE是在Document内容载入前即执行。而FireFox是等待Document内容全部载入后再执行。具体表现是,如果在onload中要获取某个element是取不到的,而FireFox却没有问题。
解决的方法:可以用window.onload来调用这个函数,或者把这个函数写在</body>之前或者之后
window.onload=function(){}其中function不能传入参数,如果要传入参数,在方法体内再写一个带参数的function
<html>
<head>
<title> document.body.onload覆盖window.onload的问题 -
博问 - 博客园社区 </title>
<script type="text/javascript"> window.onload = function() { alert("windows"); };</script>
</head>
<body onload="alert('body')">
</body>
</html>
以上代码在IE下只返回了window信息,在FF下只返回了body信息,如果把window.onload放在html下面,则FF下只返回window信息但在IE下还是window信息
但如果我给window.onload不是function而是window.onload=alert(“window”);那么在IE执行了这个语句之后VS2008会抛出“未执行”错误,但可以继续执行,继续弹出body信息。