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信息。

posted @ 2009-11-26 15:38  zqstc  阅读(441)  评论(0编辑  收藏  举报