如何参数传递给javascript函数

问题描述:

我必须要通过放慢参数的validateNum javascript函数(例如NUM1,NUM2)如何参数传递给javascript函数

if (num1.attachEvent) { 
num1.attachEvent("onkeypress", validateNum); 
} 

如何传递的attachEvent。我可以获取代码示例吗?

+0

是否'validateNum'使用'event'对象? – SLaks 2010-04-18 19:40:43

你需要做一个匿名柯里尔:

num1.attachEvent("onkeypress", function() { return validateNum(num1, num2); }); 
+0

好的,但如果我这样做,我应该如何分离事件? :) – wlf 2013-03-17 08:33:44

+0

@wlf:将处理程序存储在变量中。 – SLaks 2013-03-17 11:27:25

除了SLaks' answer,在ECMAScript的第5版实现,你可以使用bind方法:

num1.attachEvent("onkeypress", validateNum.bind(null, num1, num2)); 

在实现不支持方法,您可以使用Prototype JS框架或只是将此方法添加到此代码片段的函数原型中:

if (!('bind' in Function.prototype)) { 
    Function.prototype.bind= function(owner) { 
     var that= this; 
     var args= Array.prototype.slice.call(arguments, 1); 
     return function() { 
      return that.apply(owner, 
       args.length===0? arguments : arguments.length===0? args : 
       args.concat(Array.prototype.slice.call(arguments, 0)) 
      ); 
     }; 
    }; 
} 
+1

任何真正的浏览器都支持吗? – SLaks 2010-04-18 19:47:39

+0

@SLaks:tbh我不确定ECMAScript 5th是否在09年12月发布。即使如此,为了兼容性目的添加该方法也没有什么意义。 – 2010-04-18 19:51:10

+0

我不知道在已发布的浏览器中有任何支持,但它肯定会在即将发布的版本中显示(例如Firefox 3.7)。 – bobince 2010-04-18 21:14:18

Finnaly我得到解决方案来传递'this'作为参数。 如果有人在这里得到搜索这个(KKKK)....

<input type="checkbox" name="ch_aceito" id="ch-aceito" value="1" /> 


<script type="text/javascript"> 
    "use strict"; 

    var el = document.getElementById("ch-aceito"); 

    function isIE() { 
     var myNav = navigator.userAgent.toLowerCase(); 
     return (myNav.indexOf('msie') != -1) ? parseInt(myNav.split('msie')[1]) : false; 
    } 

    //alert(isIE()); 

    if (document.addEventListener) { 
     //console.log('here'); 
     el.addEventListener("click", getPost, false); 
    } else { 
     el.attachEvent("onclick", function() { 
      getPost(el); 
     }); 
    } 

    function getPost(el){ 
     if(isIE() && isIE() <= 8){ 
      alert(el.value); 
     } else { 
      alert(this.value); 
     } 
    } 
</script> 

我从这里得到isIE:

Detect IE version (prior to v9) in JavaScript