5

下面这两种语法有什么区别-

document.objectdocument.getElementById()

我想知道什么时候使用哪种语法???

例如-

CODE1(实现<form>

<body onload="document.forms[1].innerHTML='hi';">//Alt: onload="document.getElementById('f1').innerHTML='hi';"
<form id=f1>
    <input />
</form>
<form id=f2>
    <input />
</form>
</body>

两种语法都以onload相同的方式工作。但这不适用于以下情况 -

CODE2(实现<div>

<body onload="document.getElementById('div1').innerHTML='hi';">//cannot use the syntax: onload="document.divs[1].innerHTML='hi';"
<div id=div1>hello</div>
<div id=div2>hello</div>
</body>

所以绝对语法:document.object不适用于<div>-elements 但适用于<form>'-element. But **document.getElementById()`** 两者都适用。那我什么时候应该用哪一个???

有人请强调两种语法之间的差异。

提前谢谢...

4

3 回答 3

4

document.forms是一种非常古老的访问东西的方法,还有document.imagesand document.all,可能还有一些我不记得的方法。

访问中的第一个缺陷document.forms[1]很简单:如果在目标表单之前将另一个表单添加到页面怎么办?突然间,您必须在所有代码中搜索对任何内容的引用,然后更改它们。

这就是 ID 的用武之地。通过只允许页面上的每个 ID 中的一个,getElementById每次都可以准确地检索它,而无需关心在此期间文档会发生什么。唯一重要的变化是元素被完全删除。

于 2013-10-03T15:48:05.797 回答
1

您可以使用document.object_name来查找锚点、小程序、嵌入、表单、图像、链接、插件。

要查找 div、span 等 HTML 元素,您必须使用选择器。您可以通过元素名称、id、类等获取这些元素。

于 2013-10-03T15:52:17.017 回答
0

在您的示例中访问 div 的最简单方法是通过“窗口对象的命名访问”功能(http://www.whatwg.org/specs/web-apps/current-work/#named-access-on-the -窗口对象):

代替

<body onload="document.getElementById('div1').innerHTML='hi';">

您可以使用

<body onload="div1.innerHTML='hi';">

请注意,“div1”是窗口对象的属性,而不是文档对象的属性。

于 2013-10-03T15:57:42.950 回答