-1

私はそのような構造を持っています:

<a href="some.jpg"><img src="other.jpg" onclick="someAction(this);"></a>
<a href="some2.jpg"><img src="other2.jpg" onclick="someAction(this);"></a>
<a href="some3.jpg"><img src="other3.jpg" onclick="someAction(this);"></a>

onclick に alert(this) を追加しようとすると、[object HTMLImageElement] が表示されます

ページの他の部分からの正確な画像については、これを someAction と呼ぶ必要があります

これを行う方法?

4

3 に答える 3

2

各画像要素に id を追加し、次のように要素 id を使用して関数を呼び出します。

<a href="some.jpg"><img id="img1" src="other.jpg" onclick="someAction(this.id);"></a>
<a href="some2.jpg"><img id="img1" src="other2.jpg" onclick="someAction(this.id);"></a>
<a href="some3.jpg"><img id="img1" src="other3.jpg" onclick="someAction(this.id);"></a>

次に、関数を次のように変更します。

function someAction(senderId){
   var sender = document.getElementById(senderId);
   // ...use sender variable as you did before
}

これで、ページ内の好きな場所で同じ関数を呼び出すことができます。

<div onclick="someAction('img2')">Foo</div>"
于 2013-07-05T14:59:02.683 に答える
0

<img/>要素への参照を渡す必要があります。DOM ノードへの参照を取得する方法は複数あります (例: 、、document.getElementByIdなど)。document.getElementsByTagNamedocument.getElementsByClassName

例えば:

var firstImg = document.getElementsByTagName('img')[0];
someAction(firstImg);

さらに、ブラウザーは画像のハンドラーを実行する前にアンカーclickの をたどる可能性が高いため、画像ではなくアンカーにハンドラーをバインドする必要があります。hrefclick

于 2013-07-05T15:07:39.107 に答える
0

画像に を指定してからid="some_id"、関数呼び出しでそれを参照する必要があります。

   onClick="someAction(document.getElementById(\"some_id\"))"
于 2013-07-05T15:00:22.520 に答える