如何将参数传递给attachEvent javascript函数

时间:2010-04-18 19:33:26

标签: javascript javascript-events

我必须将参数传递给验证javascript函数(例如,num1,num2)

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

如何通过。我可以获得代码样本吗?

3 个答案:

答案 0 :(得分:5)

你需要建立一个匿名的人:

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

答案 1 :(得分:1)

SLaks' answer之外,在ECMAScript第5版实施中,您可以使用bind方法:

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

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

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))
            );
        };
    };
}

答案 2 :(得分:1)

Finnaly我得到了通过'这个'作为参数。 如果有人到这里搜索这个(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