2

onclickイベントをdivに追加するためのjavascriptがあります。

div は次のようになります。

<div id="deck0" class="deck"></div>

そして、私のjavascriptには次のものがあります:

var i = 1;
document.getElementById('deck0').SetAttribute("onclick", "begin("+i+")");   

しかし、私はこのエラーが発生します:

Uncaught TypeError: Object #<HTMLDivElement> has no method 'SetAttribute' 

私はそれを正しく行っていますか、それとも私が達成しようとしていることが不可能ですか?

4

4 に答える 4

8

setAttributeを使用してリスナーを設定しないでください。すべてのブラウザーで許可されているわけではありません。プロパティを直接設定する方がはるかに優れています。

document.getElementById('deck0').onclick = begin;

またはaddEventListenerを使用します:

document.getElementById('deck0').addEventListener('click', begin, false);

パラメータを渡す必要がある場合は、次のようにします。

document.getElementById('deck0').onclick = function() {begin(i);};

addEventListenerについても同様です。

以前のバージョンのIEはaddEventListenerをサポートしていないため、サポートの機能テストを行うにはクロスブラウザー関数が必要になることに注意してください。不足している場合は、 attachEventをテストし、直接プロパティメソッドにフォールバックします。「addEvent」関数を検索してください。例はたくさんあります。

于 2012-07-25T22:30:03.730 に答える
4

Javascript は大文字と小文字を区別します。
それはする必要がありますsetAttribute

于 2012-07-25T22:24:41.683 に答える
0

Javascriptでは大文字と小文字が区別されるため、小文字で記述する必要があります。

それとは別に、イベントリスナーを設定するには、属性を使用しないでください。これには、毎回評価される文字列が必要になります。スクリプトからより適切に行うことができます。onclick代わりに、プロパティに関数を割り当てます。

document.getElementById('deck0').onclick = function(event) {
    begin(1);
};

高度なイベント登録はさらに優れていますが、Microsoftが標準をサポートしていないため、より複雑です。

于 2012-07-25T22:29:39.907 に答える
0

onclick関数をイベントに関連付ける方法は他にもあります。

function deck0_onclick() {
    begin(i);
}

document.getElementById('deck0').onclick = deck0_onclick;

または直接:

document.getElementById('deck0').onclick = function() {begin(i);}
于 2012-07-25T22:30:20.943 に答える