如何获取动态生成元素的id属性?

时间:2012-10-30 06:08:24

标签: javascript html typescript

如果您不知道id,我怎样才能获得动态生成元素的id属性?我想在页面上为大约2000个Checkbox设置一些eventListener

我知道我可以在元素中调用函数:

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

但我不允许在我的HTML中使用JavaScript或引用它。纯JavaScript(或编译它的语言)是我唯一的选择。

知道id的一些元素的代码是:

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

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

1 个答案:

答案 0 :(得分:2)

将一个侦听器放在祖先元素上,比如正文,然后监听事件,例如:

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

,功能是:

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

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

当然你可以动态添加监听器,为方便起见我使用了内联。

修改

要动态附加侦听器,请使用addEvent函数来处理IE和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);
}