javascript - 为什么 onclick 处理程序在 javascript 中与 innerHTML 一起使用时不起作用

标签 javascript event-handling

<分区>

<html>
<head>
<script>
window.onload = function(){
    var para = document.createElement("p");
    para.innerHTML = "aaaa";
    document.body.appendChild(para);

    var bspan = document.createElement("span");
    bspan.innerHTML = "bbbb";
    para.appendChild(bspan);

    bspan.onclick = function(){
       alert("hi");
    }
    para.innerHTML += "cccc";
}
</script>
</head>
<body>
</body>
</html>

这是我的代码,我希望它在我点击 bbbb 时提示 hi,但它显然不起作用,为什么?

最佳答案

由于您没有使用 jQuery,下面是使用 javascript 的事件委托(delegate)的简单示例,因为您的 span 元素是从代码生成的,所以请尝试一下:

document.onclick = function(event) {
  var el = event.target;
  if (el.nodeName.toLowerCase() == "span") {
    alert("hi");
  }
};

Fiddle

关于javascript - 为什么 onclick 处理程序在 javascript 中与 innerHTML 一起使用时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22357590/

相关文章:

Java Enter 事件不激活处理程序

javascript - JQuery 添加到 optgroup 触发事件

javascript - Backbone.js View 如何知道其集合何时更改?

c# - 未将对象引用设置为对象的实例...错误?

javascript - 如何通过向上移动到地址栏来检测鼠标离开页面?

javascript - Jquery - 按标签选择我想要使用效果的地方

ios - UITextView 的 UIGestureRecognizer 阻止键盘在点击时出现

javascript - 如果声明不起作用 - 有什么想法吗?

javascript - 如何重置 Backbone 中的所有事件

javascript - 通过javascript中的多重处理解密