为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
Why JavaScript can't find given InnerHTML and returns Cannot set property 'innerHTML' of null?
为什么选择站点http://xn--wiadomesny-37b.pl/test/抛出Uncaught TypeError: Cannot set property 'innerHTML' of null
?
HTML(http://xn--wiadomesny-37b.pl/test/):
<div class="castle_array" id="2x1" name="2x1"></div>
<div class="castle_array" id="3x1" name="3x1"></div>
<div class="castle_array" id="4x1" name="4x1"></div>
...
JavaScript(http://xn--wiadomesny-37b.pl/test/B_modeWindow.js):
for (x = 1; x <= 5; x++) {
for (y = 1; y <= 5; y++) {
document.getElementById(x+"x"+y).addEventListener("click",B_modeWindow('1',this.id));
}}
当我更改时
("click",B_modeWindow('1',this.id)
至
("click",B_modeWindow('1','string')
它就像一个符咒——为什么?
您的代码存在两个基本问题。
首先,当您执行addEventListener("click", B_modeWindow('1', this.id));
时,您是而不是将B_modewindow
回调分配给点击事件处理程序,实际上是执行函数。
其次,在该上下文中,this
不是指点击的元素,而是指Window
对象,因此this.id
给了你undefined
,而使用event.target.id
:
要修复它,请使用以下方法:
var el = document.getElementById(x+"x"+y);
el.addEventListener("click", function (event) {
B_modeWindow('1', event.target.id);
});
这是一个简化的演示。
相关文章:
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- 为什么innerHTML返回“未定义”
- 为什么innerHTML在和相同的字符串值比较时不返回true
- 为什么innerHTML在angularjs中返回undefined
- 为什么函数中的innerHTML在向innerHTML返回值时会被忽略
- 在 innerHTML 中返回多个结果
- 为什么innerHTML在Android浏览器中返回未定义
- 我用JS在下拉框中更改了一些内容,但是innerHTML不会随更改的内容一起返回
- document.body.innerHTML只返回最后一个大小写
- 从函数返回内容时,将新创建的TD元素上的.innerHTML设置为空白
- <中的Html代码;pre>标记,innerHTML不会返回所有代码
- 无法读取属性'innerHTML'使用.on()返回null
- 从返回的表单对象中读取InnerHTML
- innerHTML显示函数,而不是函数的返回值
- 返回innerHTML作为UL
- innerHTML总是返回'undefine'在javaScript
- Span.innerHTML返回文本,但Span.value返回未定义的值
- 返回innerHtml的函数的结果是未定义的,原因是什么
- 如何编写js函数返回innerHTML
- 如果过滤器中没有元素,则返回Innerhtml消息