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 に答える