<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head><body>
<div id="A" style="width:200px; height:200px; background:#cccccc; border:1px solid #f30;">
<p id="B" style="height:20px; background:#06C">HAHAH</p>
</div>
<script language="javascript">
var b=document.getElementById("B");
b.addEventListener("click",msg(b.innerHTML),false)
function msg(a){
alert(a)
}</script>
</body>
</html>问题:为什么页面一加载或者刷新的时候就会弹出,但是点击的时候不会弹出?

解决方案 »

  1.   

    addEventListener 的第二个参数是一个 function ,你的 msg() 已经被执行了!b.addEventListener("click", function(){msg(b.innerHTML)}, false);
      

  2.   

    第二个参数必须是个函数的引用,msg(b.innerHTML)是函数的执行结果这样注册
    b.addEventListener("click",function (){msg(b.innerHTML);},false)
      

  3.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <input id="a" type="button" value="点我" />注意执行网页时该按扭并没有事件<br/>
    <input id="b" type="button" value="点我绑定事件" onclick="add_Event()" />点击该按扭为上面的按扭绑定事件<script language="javascript">
    function add_Event(){
    var a = document.getElementById("a");
    a.value="点我有事件";
    if(document.addEventListener)
    a.addEventListener("click",Hello_ok,false);
    if(document.attachEvent)
    a.attachEvent("onclick",Hello_ok);
    }function Hello_ok(){
    alert("Hello");
    }
    </script>
    </body>
    </html>
    那这里的addEventListener又怎么解释呢?
      

  4.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <input id="a" type="button" value="点我" />注意执行网页时该按扭并没有事件<br/>
    <input id="b" type="button" value="点我绑定事件" onclick="add_Event()" />点击该按扭为上面的按扭绑定事件<script language="javascript">
    function add_Event(){
    var a = document.getElementById("a");
    a.value="点我有事件";
    if(document.addEventListener)
    a.addEventListener("click",Hello_ok,false);
    if(document.attachEvent)
    a.attachEvent("onclick",Hello_ok);
    }function Hello_ok(){
    alert("Hello");
    }
    </script>
    </body>
    </html>
    那这里的addEventListener又怎么解释呢?
      

  5.   

    a.addEventListener("click",Hello_ok,false);
    Hello_ok 是函数名,是对Hello_ok函数的引用
    addEventListener("click",msg(b.innerHTML),false)
    msg(b.innerHTML)是执行函数,得到的是函数的执行结果
    参数类型都不对,当然不能正常执行了
      

  6.   

    两点
    (1)  IE不支持addEventListener的,火狐支持。之所以只弹一次,是因为浏览器屏蔽了错误,你可以设置浏览器为调试状态。
    (2) “b.addEventListener("click",msg(b.innerHTML),false)”,第二个参数要么像三面两位兄台那样写死,要么换种写法,在IE的环境下的写法(经过测试)<script language="javascript" >
    var b=document.getElementById("B");
    b.attachEvent("onclick",msg,false);
    function msg()
    {
        alert(b.innerHTML);
    }
    </script>
      

  7.   

    代码有点问题,不好意思<script language="javascript" >
    var b=document.getElementById("B");
    b.attachEvent("onclick",msg,false);
    function msg()
    {
        alert(b.innerHTML);
    }
    </script>
      

  8.   

    明白了,addEventListener中的第二个参数为绑定的函数,不能带括号的!
      

  9.   

    不是不带括号的,而是你第二个参数就应该是一个函数,你用括号也是可以,但是你在这个括号的函数内返回的值还应该是一个函数。比如msn(abc){
                 return function(){...}
    }