8

这个问题可能看起来很傻,但是使用 document.getElementById("someId") 访问元素(id为“someId”)与访问元素有什么区别?只需输入 someId ?

例如:

document.getElementById("someId").style.top = "12px";

对比

someId.style.top = "12px";

这是一个示例代码http://jsfiddle.net/pRaTA/(我发现它在firefox中不起作用)

4

5 回答 5

7

不同之处在于,虽然someId在某些浏览器中工作,但document.getElementById("someId")实际上符合 W3C 标准。

于 2010-12-01T06:50:05.187 回答
2

声明一个元素 DOM id 并不意味着它在所有浏览器中都可以作为全局变量使用。获得它的唯一交叉兼容方法是首先这样做。

var someId = document.getElementById("someId");

编辑:我制作了这个测试代码,它验证基于 webkit 的浏览器似乎在没有首先声明的情况下将 id 作为 var 提供。据此,IE也将显示行为。

  • 火狐:对象/未定义
  • Safari:对象/对象
  • 铬:对象/对象
  • IE:对象/对象(未验证)

代码:

 <html>
    <head>
    </head>
 <body>
   <div id="foo"></div>
   <script type="text/javascript">

     alert("getElementById: "+typeof document.getElementById("foo"));
     alert("as a var: "+typeof foo);

   </script>
 </body>
于 2010-12-01T06:48:41.140 回答
0

在客户端脚本中,我们使用 document.getElementById 来获取网页中的元素 obj。要从 DOM 及其属性和方法中检索特定元素,您需要使用 getElementById 方法。在 Jquery 你可以简单地做 var objX = $('#id')

直接写下 id 是行不通的。因为如何在不遍历文档的情况下从 DOM 中提取元素 obj。document.getElementById 方法将从文档中提取元素信息。我希望这有点道理。

于 2010-12-01T06:43:11.870 回答
0

仅使用someId是选择元素的旧方法(我认为这是由 IE 实现的)。document.getElementById 是适用于所有浏览器的标准。

考虑到你只支持旧版 IE 浏览器的场景。document.getElementById 仍然更加可靠和可读。如果您使用所有数字作为 ID,则可靠。

例如:

input element id="123"

document.getElementById('123').value; // this one works
123.value; // this one doesn't
于 2010-12-01T06:57:22.260 回答
0

访问元素作为以元素 ID 命名的全局对象的属性(您的第二个示例)是一种源自 IE 并已被 Safari 和 Chrome 复制的便利。这是一个非常糟糕的主意,你不应该使用它。主要问题是命名冲突(例如,具有完全有效 id 的元素,例如“alert”或“document”)。

document.getElementById()另一方面,它是历史悠久的 DOM 标准,除了一些愚蠢的 IE 缺陷外,它是万无一失的。始终优先使用它而不是其他形式。

于 2010-12-01T10:17:06.773 回答