动态创建标签上的两个onchange事件

时间:2013-03-22 17:31:14

标签: javascript

我正在尝试为具有两个不同功能的标记(onchange)添加两个事件<select>。 以下是代码的一部分:

        var slct=document.createElement("select"); 
        slct.id="tskSlk_"+idN;
        for (var i = 0; i < opt.length; i++) {
            var objOpt=document.createElement("option");
            objOpt.text=opt[i];
            slct.appendChild(objOpt);
        };
        slct.onchange=prcTypCh;
        slct.onchange=statBar;
        tsks.appendChild(slct);

所以我有这两个功能,并希望一旦有人从列表中选择一个选项就可以执行这两个功能。 我知道两种可能的方式:

  1. 使其中一个成为onblur
  2. 使第一个函数从第一个函数调用。
  3. 第一个对我来说根本不起作用,第二个现在只有好处。那还有其他方法吗?

    非常感谢。

2 个答案:

答案 0 :(得分:2)

您可以将这两个功能添加到onchange事件

slct.addEventListener('change', prcTypCh);
slct.addEventListener('change', statBar);

或者你可以让你当前的onchange函数只是一个调用这两个函数的处理程序

slct.onchange = myOnChangeHandler;

function myOnChangeHandler(){
    prcTypCh();
    statBar();
}

另外,如果可以在您的情况下进行,我建议您使用jQuery或其他abstraction framework从您的盘子上取下一些肮脏的工作。这样你就可以做到这样的事情:

$(slct).on("change", function(){
    prcTypCh();
    statBar();
});

答案 1 :(得分:0)

您可以使用addEventListener

slct.addEventListener('change', prcTypCh, false);
slct.addEventListener('change', statBar, false);

(如上所述,如果您的目标是IE&lt; 9,则需要有条件地使用attachEvent。为此,您应该考虑使用类似jQuery的库来涵盖各种浏览器实现。)< / p>