2010-04-18 202 views
3

我必須要通過放慢參數的validateNum javascript函數(例如NUM1,NUM2)如何參數傳遞給javascript函數

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

如何傳遞的attachEvent。我可以獲取代碼示例嗎?

+0

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

回答

5

你需要做一個匿名柯里爾:

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

1

除了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

1

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

相關問題