document.getElementById()VS.的getElementById()

时间:2009-05-12 18:48:59

标签: javascript getelementbyid

我常常通过执行以下操作来为某些事件注册javascript函数:

myBtn.Attributes.Add("onClick", "Validate(getElementById('"+txtFirstName.ClientID + "'));");

我总是单独使用getElementById,或者换句话说,没有将文档放在前面。但是当我尝试使用getElementById而不是document.getElementById时,我最近打破了网页。为什么是这样?奇怪的是,我有一个网站,其中一个页面允许我只使用getElementById,但另一个页面抛出一​​个javascript错误,因为如果我getElementById,它找不到该元素,它会只有{I} document.getElementById才有效。

任何人都知道这是为什么?我是否应该在任何地方使用document.getElementById,无论它是否在没有文档前缀的情况下工作?

编辑: 它可能与一个页面使用AJAX而另一个页面不是吗?

有关

6 个答案:

答案 0 :(得分:7)

当你使用getElementById()时它的工作意味着它所调用的函数在文档的上下文中运行,那就是这个==文档。

因此,您应始终使用document.getElementById来避免此类错误。

无论如何,我甚至会停止使用getElementById并开始使用JQuery,我相信你永远不会后悔。

如果您使用JQuery,您的代码将如下所示:

$("#myBtnID").click(function () { Validate($("#myTextboxID"))});

答案 1 :(得分:3)

您在没有拥有对象的情况下访问的任何函数或变量(例如:document.getElementById)都将从窗口访问该属性。

因此getElementById实际上是window.getElementById,它不是本机定义的(除非你之前定义它(例如:getElementById = document.getElementById)。

答案 2 :(得分:1)

你应该只使用document.getElementById(即使我建议使用像prototype或jquery这样的库来使用$符号)。

如果你能够自己使用getElementById,那只是因为你正在使用的浏览器正在做某种技巧才能使它工作,但正确的方法是使用文档变量。

答案 3 :(得分:1)

您应该使用完整的document.getElementById()。如果你发现它太冗长,你可以使用jQuery:

$('#' + id)

或者您可以在脚本顶部创建别名:

var byID = document.getElementById;

答案 4 :(得分:0)

我真的不知道如何解释它,但因为getElementById()在页面的html结构中找到了一个元素。有些浏览器知道默认情况下你想搜索文档,但其他浏览器需要额外的指导,因此文档。

答案 5 :(得分:0)

正确的方法确实是document.getElementById()

它本身可能起作用的原因(推测)是,根据您使用它的位置,当前上下文实际上可能是文档对象,因此不明显地导致document.getElementById()。