日期:2014-05-16  浏览次数:20306 次

高手来看看这个问题
JScript code

   第一种情况:
     var key = 1;
     if(key){                        
      $("bottomId").addEventListener('click', function(){    
        var coverDiv = box.createDiv('div', divStyle);
        box.insertDiv(coverDiv);
        $("closeId").style.visibility = "visible";
             key = 0;            
        });
    }

     第二种情况:
      var key = 1;
      $("bottomId").addEventListener('click', function(){    
        var coverDiv = box.createDiv('div', divStyle);
        box.insertDiv(coverDiv);
        $("closeId").style.visibility = "visible";
         key = 0;            
        });



为什么只有第二种情况才是我想要的结果 只能执行一次click事件呢?

------解决方案--------------------
第二种情况看起来和key没关系啊
第一种情况因为一开始key=1,所以会添加click事件,之后key=0时事件已经添加上去了 你可以在click事件里removeEventListener再试试
貌似
------解决方案--------------------
光从代码角度,这2个代码都会注册事件啊。
注册了你没有删除,只是从代码看上面2段代码效果完全一样!

所以楼主自己看看是否在其他处引用了key 还有该对象($("bottomId"))的事件。
还有楼主想要事件只执行一次的话,偷懒一点可以如下
var key = 1;
$("bottomId").addEventListener('click', function(){ 
if(key==1){
var coverDiv = box.createDiv('div', divStyle);
box.insertDiv(coverDiv);
$("closeId").style.visibility = "visible";
key = 0; 
}
});