2012-10-16 41 views
5

可能重复:
IE/Chrome: are DOM tree elements global variables here?参考由ID单独的元素,没有的document.getElementById

我目前在移动现场工作使用jQuery Mobile的,我注意到一些有趣的事情(无论如何,因为我对js仍然陌生)。在一个函数内部,你可以用id来引用一个元素。

这是测试代码我使用(在Chrome 22.0.x,火狐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> 

没有的getElementById,没有jQuery选择,只是ID。它一直是这样吗?如果是这样,这是一个很好的做法,为什么这个工作?我认为功能必须有一个上下文,但它在哪里,它是页面?

任何有识之士将不胜感激,谢谢。

+0

要回答你的问题,这听起来像一个_horrible_习惯开始。 – jahroy

+0

谢谢你们。伟大的回应,我会坚持老好getElementById :) – user1736525

回答

5

你真的这样做:

window.abc; 

这事,IE浏览器开始,这是一个真正的可怜的设计选择。

看到这个great answer to a very very similar question

这的确是一个重复的,但标题没有反映这一点。

请在您的控制台中尝试此行以了解我的意思。

(function(){ console.log(this); })(); // logs the Window object