2012-10-16 43 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