对于我来说,为某些事件注册javascript函数是很常见的,方法如下:
myBtn.Attributes.Add("onClick", "Validate(getElementById('"+txtFirstName.ClientID + "'));");我总是单独使用getElementById,或者换句话说,没有将文档放在它前面。但是,最近当我尝试使用getElementById而不是document.getElementById时,我的页面会断掉。为什么会这样呢?奇怪的是,我有一个网站,其中一个页面只允许我使用getElementById,但另一个页面抛出了一个javascript错误,因为如果我只使用getElementById,它就找不到元素,而且只有我使用document.getElementById,它才能工作。
有人知道这是为什么吗?我是否应该在任何地方使用document.getElementById,而不管它是否可以在没有文档前缀的情况下工作?
编辑:这是否与一个页面使用AJAX而另一个页面不使用AJAX有关?
发布于 2009-05-12 18:54:29
当您使用getElementById()并且它有效时,这意味着它被调用的函数在文档的上下文中运行,这就是这个==文档。
因此,您应该始终使用document.getElementById来避免此类错误。
无论如何,我甚至会完全停止使用getElementById,开始使用JQuery,我相信你永远不会后悔的。
如果您使用JQuery,您的代码将如下所示:
$("#myBtnID").click(function () { Validate($("#myTextboxID"))});发布于 2009-05-12 18:54:30
在没有拥有对象的情况下访问的任何函数或变量(例如: document.getElementById)都将从window访问该属性。
所以getElementById实际上是window.getElementById,它不是原生定义的(除非您以前定义过它(例如: getElementById = document.getElementById)。
发布于 2009-05-12 18:52:07
您应该只使用document.getElementById (即使我推荐使用prototype或jquery这样的库才能使用$符号)。
如果您能够单独使用getElementById,这只是因为您使用的浏览器正在使用某种技巧来使其工作,但正确的方法是使用document变量。
https://stackoverflow.com/questions/854253
复制相似问题