【发布时间】:2015-06-08 05:06:06
【问题描述】:
我正在尝试编写一个循环来初始化 JavaScript 中的事件处理程序。
我认为我做错了什么,因为我的调试功能在没有发生事件(点击)的情况下被激活。
我想做的是这样的:
var JS_elements = document.getElementsByClassName("JS")
for (y = 0; y < JS_elements.length; y++){
document.write(JS_elements.item(y).innerHTML);
JS_elements.item(y).addEventListener("click",testfunc());
}
function testfunc() {
alert("TestFunc");
}
当我点击一个带有 class="JS" 的元素时运行 testfunc()。
document.write(JS_elements.item(y).innerHTML); 行正确执行,所以我知道我得到了正确的对象。可悲的是,注释行导致此中断:testfunc() 在页面加载时自动运行 3 次。
谁能解释为什么会这样?我唯一能想到的是“点击”由于某种原因被评估为true。
HTML:
<header>
<hr>
<p>- Header Background Color Controller -</p>
<table>
<tr>
<td>Javascript Controller:</td>
<td class="JS">Red
<input type="hidden" value='false'>
</td>
<td class="JS">Green
<input type="hidden" value='false'>
</td>
<td class="JS">Blue
<input type="hidden" value='false'>
</td>
</tr>
<tr>
<td>jQuery Controller:</td>
<td class="jQ" value=false>Red</td>
<td class="jQ" value=false>Green</td>
<td class="jQ" value=false>Blue</td>
<tr>
</table>
<hr>
</header>
【问题讨论】:
-
你知道函数名后面的
()是做什么的吗?testfunc没有返回函数,为什么在设置事件监听的时候调用呢? -
我只是使用
testfunc()进行调试。 -
请出示您拥有的真实代码。请注意,
document.write无论如何都会破坏代码,如果它是在页面被解析之后执行的。 -
这是我拥有的真实代码。
-
那么请重新阅读我的第一条评论。
标签: javascript html for-loop addeventlistener