zoukankan      html  css  js  c++  java
  • 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信息。

  • 相关阅读:
    逆元
    C++快读
    最长单调上升子序列(LIS) O(nlogn)求法
    【简●解】巴厘岛的雕塑
    【简●解】学校食堂
    【简●解】[HNOI2005]星际贸易
    差分约束系统小结
    【简•解】花园
    最小生成树小结
    概率及期望DP小结
  • 原文地址:https://www.cnblogs.com/zqstc/p/1611404.html
Copyright © 2011-2022 走看看