1

id動的に生成された要素の属性がわからない場合、どうすれば取得できますidか?eventListener1ページに約2000個のチェックボックスを設定したいと思います。

要素内から関数を呼び出すことができることはわかっています。

<input type="checkbox" id="{databaseResult.Value}" onclick="someFunction(this)" />

ただし、JavaScriptを使用したり、HTMLでJavaScriptを参照したりすることは許可されていません。純粋なJavaScript(またはそれにコンパイルされる言語)が私の唯一の選択肢です。

私が知っているいくつかの要素について私がすでに持っているコードは次のidとおりです。

var tb = <HTMLInputElement>document.getElementById("tbox");

if(tb.addEventListener("", function (e) {
    sayHello(tb.value);
}, false));
4

1 に答える 1

2

単一のリスナーを祖先要素、たとえば体に置き、その上のイベントをリッスンします。例:

<body onclick="handleClick(event);" ...>

関数は次のとおりです。

function handleClick(evt) {
  var el = evt.target || evt.srcElement;

  if (el && el.type == 'checkbox') {
    alert(el.id);
  }
}

もちろん、リスナーを動的に追加することもできます。便宜上、インラインを使用しました。

編集

リスナーを動的に接続するには、addEventIEおよびW3Cイベントモデルに対処する関数を使用します。

function addEvent(el, evt, fn) {

  // W3C event model
  if (el.addEventListener) {
    el.addEventListener(evt, fn, false);

  // IE event model
  // Set this and pass event as first parameter
  } else if (el.attachEvent) {
    el.attachEvent('on' + evt, (function(el, fn) {
        return function() {fn.call(el, window.event);};
      })(el, fn)
    );
  }

  // Prevent circular reference
  el = null;
}

そしてそれを次のように呼びます:

window.onload = function() {
  addEvent(document.body, 'click', handleClick);
}
于 2012-10-30T06:19:58.530 に答える