如果函数已经返回某个函数,如何防止函数中的默认值

时间:2013-09-13 03:51:17

标签: javascript

for(var i=0; i < 2; i++){
     someNode.onclick = function(num){
         return function(){
           alert(num);   
       }
    }(i)
}

这是我的javascript,

<a href="http://example.com/"></a>

这是我在html中的节点

由于关闭问题,我需要在函数内部嵌入一个函数,所以如何在单击链接时阻止链接将我重定向到其他页面?因为它已经返回一个函数。我无法添加return false;

2 个答案:

答案 0 :(得分:3)

您可以添加return false;

for(var i=0; i < 2; i++){
     someNode.onclick = function(num){
         return function(){
           alert(num);
           return false;   
       }
    }(i);
}

或者您可以使用e.preventDefault

for(var i=0; i < 2; i++){
     someNode.onclick = function(num){
         return function(e){
           e.preventDefault();
           alert(num);   
       }
    }(i);
}

答案 1 :(得分:0)

尝试这种方式:(灵感来自this。)

<强> DEMO

// Your Existing code
for(var i=1; i <= 2; i++){
     document.getElementById("link"+ i).onclick = function(num){
         return function(){
           alert(num);   
       }
    }(i);
}


// Update the onclick event handlers to return false at end.
for(var i=1; i <= 2; i++) {
    var node = document.getElementById("link"+ i);    
    node.onclick = (function (fn) {
      return function () { 
          fn.apply(fn, arguments);
          return false;
      };
    })(node.onclick);
}