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!')";

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

我究竟做错了什么?

4

2 回答 2

3

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

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

直接分配您的“警报”呼叫将触发它(如您所见)。您要做的是将您的处理程序分配给将在事件触发时调用的函数。

于 2012-09-19T15:46:59.500 回答
2

属性名称是onclick

onClick即使是有效的 HTML,在 JS 中也不存在,因为它区分大小写。

此外,您还必须按照 David 的回答 (+1) 为其分配函数引用或表达式。

小提琴

于 2012-09-19T15:52:01.443 回答