document.getElementById()VS. 的getElementById()

Jag*_*agd 3 javascript getelementbyid

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

myBtn.Attributes.Add("onClick", "Validate(getElementById('"+txtFirstName.ClientID + "'));");
Run Code Online (Sandbox Code Playgroud)

我总是单独使用getElementById,或者换句话说,没有文件可以使用它.但是当我尝试使用getElementById而不是使用时,我最近打破了页面document.getElementById.为什么是这样?奇怪的是,我有一个网站,其中一个页面允许我只使用getElementById,但另一个页面抛出一​​个javascript错误,因为它无法找到该元素,如果我只是getElementById,它只会工作,如果我这样做document.getElementById.

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

编辑:它可能与一个页面使用AJAX而另一个页面不是这样的事实有关吗?

alb*_*ein 7

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

因此,您应该始终使用document.getElementById以避免这种错误.

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

如果你使用JQuery,你的代码看起来会像这样:

$("#myBtnID").click(function () { Validate($("#myTextboxID"))});
Run Code Online (Sandbox Code Playgroud)

  • 对不起,但你的描述错了:当前的词汇环境('context')与`this`引用的对象不同; 如果一个普通的`getElementById()`工作,它并不意味着`this == document`,而是一个带有这样名字的变量在一个封闭函数或全局对象(又名`window`)中定义 (8认同)
  • 对于这样一个可怕的错误答案,它有非常多的赞成. (8认同)