Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么onclick处理程序在javascript中与innerHTML一起使用时不起作用 window.onload=函数(){ var para=document.createElement(“p”); para.innerHTML=“aaaa”; 文件.正文.附件(第6段); var bspan=document.createElement(“span”); bspan.innerHTML=“bbbb”; 第3段(bspan); bspan.onclick=函数(){ 警报(“hi”); } para.innerHTML+=“cccc”; }_Javascript_Event Handling - Fatal编程技术网

为什么onclick处理程序在javascript中与innerHTML一起使用时不起作用 window.onload=函数(){ var para=document.createElement(“p”); para.innerHTML=“aaaa”; 文件.正文.附件(第6段); var bspan=document.createElement(“span”); bspan.innerHTML=“bbbb”; 第3段(bspan); bspan.onclick=函数(){ 警报(“hi”); } para.innerHTML+=“cccc”; }

为什么onclick处理程序在javascript中与innerHTML一起使用时不起作用 window.onload=函数(){ var para=document.createElement(“p”); para.innerHTML=“aaaa”; 文件.正文.附件(第6段); var bspan=document.createElement(“span”); bspan.innerHTML=“bbbb”; 第3段(bspan); bspan.onclick=函数(){ 警报(“hi”); } para.innerHTML+=“cccc”; },javascript,event-handling,Javascript,Event Handling,这是我的代码,我希望当我点击bbbb时它会提醒hi,但它显然不起作用,为什么?简短回答,我得到的错误是未捕获引用错误:spa未定义,因此您需要先定义spa。因为您没有使用jQuery,下面是一个使用javascript的事件委派的简单示例,因为span元素是从代码生成的,所以请尝试一下: <html> <head> <script> window.onload = function(){ var para = document.createElemen

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

简短回答,我得到的错误是
未捕获引用错误:spa未定义
,因此您需要先定义spa。

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

<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>

你是说
spa
成为
bspan
?(两处输入错误)@SteveHoward已更正,但仍然不起作用如果您对
para.innerHTML+=“cccc”
进行注释,它就起作用了。我想把它扔出去供你参考。好的,谢谢@MikeMarks,但是,为什么这可能会被纠正,但仍然不起作用,他的问题是为什么它不起作用。“我不知道为什么会投反对票。”扎克斯彭斯,你真的不知道他指的是
bspan
?我不知道,我看到了你所看到的,并且马上就知道这就是他的意思,但是如果你没有,你知道,这就解释了你的答案。@Mike为什么需要被解释清楚?为什么我要假设
spa
是一个打字错误?你需要放开这一个,迈克,这是数百万个答案中的一个。@ZachSpencer-它需要被散列出来,因为如果你知道(或者至少有一个像样的想法)他真正的意思,但你把这个作为答案只是开玩笑,它并不是完全回答他的问题,尽管肯定,从技术上讲,这是一个答案——你没有真正注意到他的问题,或者你只是想成为一个聪明的蠢货。不需要天才就能理解他的意思,而且这个答案也不是经过深思熟虑的。在发布这样的答案之前,请理解问题的根源。我可以知道我的代码为什么不起作用吗?这是因为您正在运行时创建
span
。是理解它的有价值的帖子。@DhavalMarthak,如果你注释掉
para.innerHTML+=“cccc”,然后它就工作了。你知道这是为什么吗?我对@mikemarks有同样的问题一个更强烈的暗示是
para.innerHTML+=“cccc”
实际上是
para.innerHTML=para.innerHTML+“cccc”
的缩写。如果您在尝试更改它之前先查看
para.innerHTML
,您可能会明白为什么这一行会删除事件处理程序。
document.onclick = function(event) {
  var el = event.target;
  if (el.nodeName.toLowerCase() == "span") {
    alert("hi");
  }
};