電子書籍の厳選無料作品が豊富!

javascriptで.getElementByIdでなぜかname属性を拾ってしまいます。


<script>
function gets() {
aa = document.getElementById('idid').innerHTML;
bb=document.getElementById('idid').tagName;
alert(aa+bb);
}
</script>

<input type="submit" value="ボタン" name="idid" onclick="gets();"><span id="idid">ああああ</span>

上記は大分省略してえいますが、このようなコードで
aaに「ああああ」が代入されず、bbに「INPUT」が代入されます。

通常ならアラーとは「ああああSPAN」のはずが「INPUT」になってしまいます。

どのような理由が考えられるでしょうか。

ちなみに、HTMLページはフレーム内で表示しています。

A 回答 (2件)

ブラウザによる id/name の混同は悪習ではありますが、


互換性の為に今後も残る可能性がありますので、
ちょっとした契機でバグが発生する要因として、
これからも生き残っていくのでしょう。
残念ながら

なので、この手の対策として
* id と name で被らない様な名前付けをする
を今後も心がけたほうが良いでしょう。
そもそも目的の異なる属性なので被らない筈です。

<input type=text name=hoge id=hoge>
なんて実装は論外ですよ!
    • good
    • 0

ググりゃ分かることですが、IE7以前のブラウザの誤動作です。


https://www.google.com/search?q=getElementById+n …
今時IE7以前が入ってるのは「会社のだからアップデートできない古いPC」くらい。一般の人は大抵8以降ですから、気にする必要はありません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!