1

2つの異なる関数を持つonchangeタグ( )の2つのイベントを追加しようとしています。<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);

だから私はこれらの2つの機能を持っていて、誰かがリストからオプションを選択したら、それらの2つを実行したいと思っています。私は2つの可能な方法を知っています:

  1. それらの1つをonblur
  2. 最初から呼び出される2番目の関数を作成します。

1つ目は私にはまったく機能しておらず、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);

(前述のように、attachEventIE <9をターゲットにしている場合は、条件付きで使用する必要があります。このためには、さまざまなブラウザー実装をカバーするためにjQueryなどのライブラリの使用を検討する必要があります。)

于 2013-03-22T17:35:37.807 に答える