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