文件[“某些名字”]真的有什么作用?

时间:2012-10-27 18:01:10

标签: javascript html document

此代码

<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"].innerHTML行的预期更改。 document["some string"]真正回归了什么?

1 个答案:

答案 0 :(得分:11)

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

也就是说,name attribute不是<h1>标记的有效属性,因此文档不会将其加载到document["name"]值。

name属性对以下元素有效:

  • <a> - HTML 4中已弃用的属性,HTML5中已废弃
  • <applet> - HTML5中的元素已废弃
  • <button>
  • <form> - HTML 4中不推荐使用的属性returned in HTML5
  • <frame> - HTML5中的元素已废弃
  • <iframe>
  • <img> - HTML 4中已弃用的属性,HTML5中已废弃
  • <input>
  • <map>
  • <meta> - 不同的name属性
  • <object>
  • <param> - 不同的name属性
  • <select>
  • <textarea>

对于每个元素,如果它们具有name属性,则会将它们添加到文档中,如您所见。但是,获取此元素的首选方法是使用document.getElementsByName()