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>对and<h1>标签做一些不同的事情。图片src按行预期改变document["n1"].src。但是标题innerHTML并没有像预期的那样改变document["n2"].innerHTMLdocument["some string"]真正返回的是什么?

4

1 回答 1

11

在 JavaScript 中,object["string"]访问'string'. object这可用于访问许多不同对象的许多不同属性,就像将对象视为值的哈希映射一样。对于document对象,默认情况下会加载某些属性,例如具有name属性的元素。至少对于某些浏览器(我不知道哪个子集)。

也就是说,该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 回答