仅通过id引用元素,没有document.getElementById

use*_*525 5 javascript

可能重复:
IE/Chrome:DOM树元素是全局变量吗?

我目前正在使用jquery mobile在移动网站上工作,我发现了一些有趣的东西(无论如何,对我来说,因为我还是js的新手).在函数内部,您可以引用仅具有id的元素.

这是我使用的测试代码(在chrome 22.0.x,firefox 16.0.1和safari 5.1.7上):

<!DOCTYPE html>
<html>
  <head></head>
  <body onload="tt()">
    <div id="abc">Test</div>
    <a id="cba">Test2</a>
  </body>
  <Script>
    function tt() {
        console.log(abc);
        abc.style.backgroundColor = "red";
        return cba;
    }
  </Script>
</html>
Run Code Online (Sandbox Code Playgroud)

没有getElementById,没有jquery选择器,只有id.它总是这样吗?如果是这样,这是一个很好的做法,为什么这样做?我认为函数必须有一个上下文,但它在哪里,它是页面?

任何见解将不胜感激,谢谢.

Kyl*_*yle 5

你真的在做:

window.abc;
Run Code Online (Sandbox Code Playgroud)

这是IE开始的,这实际上是一个糟糕的设计选择.

看到一个非常相似的问题的这个很好的答案

这真的是重复但标题并没有反映这一点.

在你的控制台中尝试这一行,看看我的意思.

(function(){ console.log(this); })(); // logs the Window object
Run Code Online (Sandbox Code Playgroud)