4

このコード

<img name="n1" src="" />
<h1 name="n2">a header</h1>
<script>
document["n1"].src = "http://x.y/picture.jpg";
document["n2"].innerHTML = "Boo";
</script>

<img>および<h1>タグに対して異なることを行います。絵srcは、ラインによって期待どおりに変更されdocument["n1"].srcます。innerHTMLしかし、行によって期待されるように見出しは変更されませんdocument["n2"].innerHTMLdocument["some string"]本当に返ってくるものは何ですか?

4

1 に答える 1

11

JavaScript では、 のプロパティにobject["string"]アクセスします。これは、多くの異なるオブジェクトの多くの異なるプロパティにアクセスするために使用でき、オブジェクトを値のハッシュ マップとして扱うようなものです。オブジェクトの場合、属性を持つ要素など、デフォルトで特定のプロパティがロードされます。少なくとも一部のブラウザーでは (どのサブセットかわかりません)。'string'objectdocumentname

つまり、name属性<h1>はタグの有効な属性ではないため、ドキュメントはそれをdocument["name"]値にロードしません。

name 属性は、次の要素で有効です。

  • <a>- HTML 4 で廃止され、HTML5 で廃止された属性
  • <applet>- HTML5 で廃止された要素
  • <button>
  • <form>- HTML 4 で廃止され、HTML5 で返された属性
  • <frame>- HTML5 で廃止された要素
  • <iframe>
  • <img>- HTML 4 で廃止され、HTML5 で廃止された属性
  • <input>
  • <map>
  • <meta>- 同じname属性ではない
  • <object>
  • <param>- 同じname属性ではない
  • <select>
  • <textarea>

これらの要素のそれぞれについて、name属性がある場合は、ご覧のとおり、ドキュメントに追加されます。ただし、この要素を取得するための推奨される方法は、document.getElementsByName()

于 2012-10-27T18:03:53.743 に答える