document.getElementById(“someId”)Vs. someId

时间:2010-12-01 06:36:29

标签: javascript html getelementbyid

这个问题可能看起来很愚蠢,但是使用document.getElementById(“someId”)Vs访问元素(使用id“someId”)之间的区别是什么。只是输入someId?

例如:

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

VS

someId.style.top = "12px";

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

5 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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

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

  • Firefox:object / undefined
  • Safari:object / object
  • Chrome:对象/对象
  • IE:object / object (未验证)

代码:

 <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>

答案 2 :(得分:0)

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

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

答案 3 :(得分: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

答案 4 :(得分:0)

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

另一方面,

document.getElementById()是长期建立的DOM标准,除了some idiotic IE flaws之外,它是万无一失的。始终优先使用它而不是其他形式。