Javascript动态OnChange事件

时间:2011-06-11 20:33:29

标签: javascript html

我正在尝试动态地将更改事件添加到HTML选择对象。我似乎无法让它发挥作用。我需要函数调用dropDownChange并传递两个参数this和nextDepth。

   var nextDepth = (int)......
   var selectBox = ......
   selectBox.onchange += function(nextDepth){dropDownChange(this, nextDepth);}; 

不确定如何解决这个问题......我认为这可行。任何帮助你都会非常感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

我假设您正在寻找一种方法来传递与当前执行对象或命名空间相关的this。为了表达这一点,下面的代码示例使用匿名函数,其中this存储在变量me中。然后当select的更改事件触发时,调用自定义函数,传入两个指定的变量。

(function() {
    var me = this;
    var selectBox = document.getElementById("selectBox");
    var nextDepth = 2;

    selectBox.onchange = function() {
        dropDownChange(me, nextDepth);
    };
})();

答案 1 :(得分:1)

function changeonchange(){
    var selectBox = document.getElementById("selectBox");
    var nextDepth = getIntFromSomeWhere();

    selectBox.onchange = function() {
        var targ;
        if (!e) var e = window.event;
        if (e.target) targ = e.target;
        else if (e.srcElement) targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
            targ = targ.parentNode;
        dropDownChange(targ, nextDepth);
    };
}

每次调用“changeonchange”时,您可以从http://www.quirksmode.org/js/events_properties.html获取有关事件的更多信息,创建新范围以保存局部变量,并且该范围随新的onchange处理程序一起传送。