在For循环中将onClick应用于元素数组

5

我正在尝试将一个onClick事件应用于文档中的一个元素数组,代码如下:

for (var i = 0; i < myElems.length; i++)
     myElems[i].onClick = "someFunction(this)";

代码放置在body标签的onLoad事件的init()函数中。我注意到当文档加载时,这些函数不起作用。 我注意到,如果我添加一个alert()来告诉我函数是否有问题:
for (var i = 0; i < myElems.length; i++)
     myElems[i].onClick = "alert('It worked!')";

文档将加载并为所有元素执行警报,而不考虑我是否实际点击了该元素。我做错了什么?

你是如何调用init函数的? - PitaJ
2个回答

3

您需要将“onclick”处理程序分配给一个函数:

for (var i = 0; i < myElems.length; i++)
     myElems[i].onclick = function() { someFunction(this);};

将“alert”调用直接分配会触发它(正如您所看到的)。您想要做的是将处理程序分配给一个函数,该函数在事件触发时将被调用。

@David Hoerster 的意思是你把 onClick 处理程序分配给了一个字符串,而不是函数本身。 - Dave Zych
1
好的,我感觉有点傻。处理程序运行得非常好。我还注意到了关于方法名称为“onclick”而不是“onClick”的注释。谢谢大家。 - Pori
@user1257262 很高兴能够帮助您。别忘了将一个答案标记为正确答案。这将有助于提高您的接受率,并鼓励更多人回答您未来的问题。祝你好运! - David Hoerster

2
属性名为onclick

onClick虽然在HTML中是有效的,但在JS中是区分大小写的,因此不存在。

此外,您必须像David回答的那样(+1),将它分配给一个函数引用或表达式。

Fiddle


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接