0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IEだとHTMLCollection.item()の挙動が異なる

Posted at

問題のコード

sample.html
<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>sample</title>
</head>
<body>
    <p id="one">1</p>
    <p id="two">2</p>
    <p id="three">3</p>

    <div id="hoge"></div>
</body>
<script>
    let pElements = document.getElementsByTagName("p");
    let value = pElements.item("two").innerText;

    document.getElementById("hoge").innerText = value;
</script>
</html>

pタグの内、「id=two」の要素のテキストを取得し、「id=hoge」の要素に追加するコード。

MDNを参照するとHTMLCollection.item()の引数には、indexを指定しなければならず、上記コードは期待通りの動作をしないはず。
MDN Web Docs : HTMLCollection

Chromeでの表示

1
2
3
1

Chromeでは想定通り「id=two」の要素が取得できていない。

IEでの表示

1
2
3
2

IEでは「id=two」の要素が取得できている。

まとめ

IEでは引数に文字列を渡した場合、HTMLCollection.namedItem()と同じ挙動をする模様。
IEと他ブラウザで同じ挙動をさせたい場合は、.namedItem()か.getElementBy○○()を使用するのが良さそう。

妙にハマったので備忘録として残しておく。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?