Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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_Javascript_Onclick - Fatal编程技术网

onclick事件未触发javascript

onclick事件未触发javascript,javascript,onclick,Javascript,Onclick,编辑#2: 做了一把小提琴。。。(我硬编码了一些我确信正确的东西,但问题仍然存在) 原件: 因此,我已经编写了成千上万行javascript,并且使用了数百次类似于这样的代码,我不明白发生了什么 blacklistitembutton.onclick = function() { console.log("clicked."); } 上面的代码似乎不起作用。。。我不知道为什么 事实上,我之前在同一个文件中使用了相同的方法。。。而且效果很好 settings.onclick = functi

编辑#2:

做了一把小提琴。。。(我硬编码了一些我确信正确的东西,但问题仍然存在)

原件:

因此,我已经编写了成千上万行javascript,并且使用了数百次类似于这样的代码,我不明白发生了什么

blacklistitembutton.onclick = function() {
  console.log("clicked.");
}
上面的代码似乎不起作用。。。我不知道为什么

事实上,我之前在同一个文件中使用了相同的方法。。。而且效果很好

settings.onclick = function() {
  settings_popup.toggle();
}
编辑:

这可能与它在for循环中执行有关吗? 这是代码

var blacklistButton = document.createElement('input');
blacklistButton.type = 'button';
blacklistButton.value = "Add Current Site to Blacklist";
blacklistButton.onclick = function() {
  console.log('blacklistButton clicked');
}

for (var i=0;i<blacklist.length;i++) {
  var blacklistitembutton = document.createElement('div');
  blacklistitembutton.type = 'button';
  blacklistitembutton.blacklistValue = blacklist[i];
  blacklistitembutton.value = "X";
  blacklistitembutton.onclick = function() {
    console.log("clicked.");
  }
}
var blacklistButton=document.createElement('input');
blacklistButton.type='button';
blacklistButton.value=“将当前站点添加到黑名单”;
blacklistButton.onclick=函数(){
log('blacklistButton clicked');
}
对于(var i=0;i
编辑:

下面是对代码的重新编写:

你的代码中有很多东西让我担心。希望通过我的重写,你可以看到有更好的方法来处理一些事情

1) 我不知道为什么要在开头使用document.write()。这没有什么意义

2) 您对DOM的修改太多了。您在代码中创建的一些DOM元素最好只是作为html中的目标位置。只有动态创建的输入按钮元素需要在javascript中完成。记住,应该尽可能少地修改DOM

3) 不要使用onclick、onsubmit、onhover等语法分配事件。事件应仅使用addEventListener绑定到DOM元素。以正确的方式执行此操作的另一个好处是,如果需要,可以将同一类型的多个事件分配给同一元素。另外,使用我没有包含的一些额外的状态代码,如果需要,您可以在以后有选择地删除特定事件

4) 几年前,关于使用innerHTML和字符串模板是否比使用DOM创建方法更快/更好,存在一场争论。有一段时间,最好的解决方案是使用documentFragments和这两种方法的组合。现在,这已经不重要了,因为所有浏览器都非常快,所以为了简单起见,最好只使用innerHTML

这也回到了“不要过多接触DOM”的规则。如果你看一下我的代码,你会发现我只是把最终的html组装成一个元素数组,最后作为一个字符串连接起来。然后用一条innerHTML语句将其呈现给DOM。我只触摸了DOM一次,而不是多次

5) 最后一点再次进入事件。在代码的开头和结尾,您可以看到我在何处以及如何为DOM元素添加事件。实际上,可以将开始时的addEventListener移到末尾,以便将所有事件声明组合在一起,但这并不重要。我把它放在顶部是为了帮助你更好地理解发生了什么


希望这能有所帮助。

对于无限制的事件绑定,可以使用
addEventListener
attachEvent
方法。您不能使用传统方法添加多个相同类型的事件。

我不知道您在此处输入的内容是否有误,但在循环中,您创建了一个“div”,然后为其指定了一种“button”。这是有效的还是会出错?如果是,则说明事件处理程序无法获取函数的原因。试着把它变成一个“输入”,看看它现在是否工作。

修复了它

blacklistitem.innerHTML += blacklist[i];
^在代码中,blacklistitem仍然是一个javascript项,还没有附加到文档中的to be parent元素


因此,我只是将黑名单[I]粘贴到span标记中并作为子标签附加,现在它工作正常:)

您可以制作一个JSFIDLE文档(JSFIDLE.net)吗?您在什么浏览器上运行这个?另外,您能否为您的示例提供更多的代码什么是
blacklistitembutton
以及如何定义它?我将编辑并提供更多关于定义blacklistitembutton的信息。您是否确保dom已准备就绪?我们需要查看完整的代码示例。转到并设置一个。是的,我放在JSFIDLE中的代码与我的实际代码非常不同。在我的实际代码中,我使用了一些函数来附加东西,这样所有东西都可以放在javascript中,然后再附加一次。。。救命啊。。。因为你从来没有回答过我的问题。。。不过我想还是要谢谢你。作为一条经验法则,“不要说得太多”,保持简单;)是的,这是一个打字错误,我没有在js fiddle@zconnelly13这里是一个演示,通过它,使自己的最好!
blacklistitem.innerHTML += blacklist[i];