8

私はこのコードを使用します:

<div name="1234">
   <img src="pic.gif" height="70" width="100" onMouseOver="clear('1234')">
</div> 

と:

function clear(element_name){
    document.getElementsByName(element_name)[0].innerHTML="";
}

Firefox と Opera では動作しますが、IE 6.0 や IE 8.0 では動作せず、おそらく新しい IE でも動作しません。

何をすべきか?

4

2 に答える 2

6

さて、問題はこれです: IE は document.getElementsByName(...)[0] を document.getElementById(...) として理解します。したがって、要素の id も定義する場合、メソッド document.getElementsByName(element_name)[0].innerHTML="" は驚くべきことに IE でも機能します!

ただし、とにかくIEのためにIDを定義する必要があり、IDは常に最初に文字で始まる必要があるため、次を使用する必要があります。

<div id="a234">
    <img src="pic.gif" height="70" width="100" onMouseOver="clear('a234')">
</div> 

そして、このコマンド:

function clear(element_id){
    document.getElementById(element_id).innerHTML="";
}

さらに、document.getElementsByName(...)[0] は Firefox では遅くなります: http://www.uize.com/tests/performance/getElementById-vs-getElementsByName.html

したがって、idは間違いなくレースに勝ちます。

アップデート:

また重要なことは、 CSSファイルで #a234{...} によってすべての ID をアドレス指定できることです。したがって、すべての id に対して独自のスタイルを定義でき、これにより id がさらに強力になります。

于 2013-01-29T04:29:59.347 に答える