这个问题似乎很愚蠢,但是使用document.getElementById(“ someid”)vs.访问元素(使用ID“ someid”)有什么区别。只是打字吗?

例如:

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

vs

someId.style.top = "12px";

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

有帮助吗?

解决方案

区别在于 someId 在某些浏览器中工作, document.getElementById("someId") 实际上符合W3C标准。

其他提示

声明元素DOM ID并不意味着它在所有浏览器中作为全局变量可用。唯一的交叉兼容方法是首先做到。

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

编辑: 我制作了此测试代码,该代码验证了基于WebKit的浏览器似乎可以将ID作为VAR提供,而无需先声明。根据 , ,IE也将显示这种行为。

  • Firefox:对象/未定义
  • 野生动物园:对象/对象
  • Chrome:对象/对象
  • 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>

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

在写下ID直接的地方将无法完成这项工作。因为您将如何从DOM中提取元素OBJ而不穿越文档。 document.getElementById方法将从文档中获取元素信息。我希望这有意义。

仅使用 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

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

document.getElementById(), 另一方面,是长期以来的DOM标准,除了 一些愚蠢的IE缺陷, ,是万无一失的。始终优先使用其他形式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top