首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >document.getElementById() VS.getElementById()

document.getElementById() VS.getElementById()
EN

Stack Overflow用户
提问于 2009-05-12 18:48:59
回答 6查看 13.7K关注 0票数 3

对于我来说,为某些事件注册javascript函数是很常见的,方法如下:

代码语言:javascript
复制
myBtn.Attributes.Add("onClick", "Validate(getElementById('"+txtFirstName.ClientID + "'));");

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

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

编辑:这是否与一个页面使用AJAX而另一个页面不使用AJAX有关?

EN

回答 6

Stack Overflow用户

发布于 2009-05-12 18:54:29

当您使用getElementById()并且它有效时,这意味着它被调用的函数在文档的上下文中运行,这就是这个==文档。

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

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

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

代码语言:javascript
复制
$("#myBtnID").click(function () { Validate($("#myTextboxID"))});
票数 7
EN

Stack Overflow用户

发布于 2009-05-12 18:54:30

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

所以getElementById实际上是window.getElementById,它不是原生定义的(除非您以前定义过它(例如: getElementById = document.getElementById)。

票数 3
EN

Stack Overflow用户

发布于 2009-05-12 18:52:07

您应该只使用document.getElementById (即使我推荐使用prototype或jquery这样的库才能使用$符号)。

如果您能够单独使用getElementById,这只是因为您使用的浏览器正在使用某种技巧来使其工作,但正确的方法是使用document变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/854253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档