1

我正在尝试为具有两个不同功能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. 使第二个函数从第一个函数中调用。

第一个对我来说根本不起作用,第二个只对现在有用。那么还有其他方法吗?

非常感谢。

4

2 回答 2

2

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

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

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

slct.onchange = myOnChangeHandler;

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

此外,如果可能的话,我建议您使用jQuery或其他抽象框架来完成一些繁琐的工作。这样你就可以做这样的事情:

$(slct).on("change", function(){
    prcTypCh();
    statBar();
});
于 2013-03-22T17:53:29.180 回答
0

你可以使用addEventListener

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

(如前所述,attachEvent如果您的目标是 IE < 9,则需要有条件地使用。为此,您应该考虑使用像 jQuery 这样的库来涵盖各种浏览器实现。)

于 2013-03-22T17:35:37.807 回答