web-dev-qa-db-ja.com

javascriptを介して選択ボックスにonchangeイベントを追加する方法は?

選択ボックスを動的に作成するスクリプトがあります。これらのボックスが作成されたら、新しいボックスのonchangeイベントを設定して、toggleSelect()という関数を指すようにします。

Onchangeイベントを作成する構文を正しく取得できないようです。誰かが私が間違っていることを教えてもらえますか?エラーはスローされませんが、機能しません。

  col = dataRow.insertCell(0);
  var transport_select = document.createElement('select');
  transport_select.id = transport_select_id;
  transport_select.options[0] = new Option('LTL', 'LTL');
  transport_select.options[1] = new Option('FTL', 'FTL');
  transport_select.onChange = function(){toggleSelect(transport_select_id);};
  col.appendChild(transport_select);
34
user77413

追加する

transport_select.setAttribute("onchange", function(){toggleSelect(transport_select_id);});

setAttribute

またはonChangeonchangeに置き換えてみてください

30
rahul

W3C DOM Level 2 Events Specification に基づいてイベントをアタッチする別の方法を次に示します。

  transport_select.addEventListener(
     'change',
     function() { toggleSelect(this.id); },
     false
  );
38
o.k.w

交換:

transport_select.onChange = function(){toggleSelect(transport_select_id);};

で:

transport_select.onchange = function(){toggleSelect(transport_select_id);};

on '[〜#〜] c [〜#〜]' hange>>on 'c 「ハング


addEventListener も使用できます。

12
IgniteCoders

Prototype.jsを使用している場合、これを行うことができます。

transport_select.observe('change', function(){
  toggleSelect(transport_select_id)
})

これによりcross-browsersの問題が(期待どおり)排除されます。