2012-10-16 12 views
5

Powiel możliwe:
IE/Chrome: are DOM tree elements global variables here?Odniesienie do elementu przez ID sam, bez document.getElementById

Ja obecnie pracuje na mobilnej stronie za pomocą jQuery mobile i zauważyłem coś ciekawego (do mnie tak czy owak, ponieważ wciąż jestem nowy w js). Wewnątrz funkcji można odwoływać się do elementu o samym identyfikatorze.

Jest to kod testu użyłem (Chrome, Firefox 16.0.1 22.0.x i 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> 

Nie getElementById nie selektor jQuery, tylko id. Czy zawsze tak było? Jeśli tak, czy jest to dobra praktyka i dlaczego to działa? Myślę, że funkcja musi mieć kontekst, ale gdzie to jest, czy to strona?

Każdy wgląd byłby doceniony, dzięki.

+0

Aby odpowiedzieć na twoje pytanie, brzmi to jak przyzwyczajenie na początek. – jahroy

+0

Dzięki chłopaki. Świetna odpowiedź, będę trzymać się starego dobrego getElementById :) – user1736525

Odpowiedz

5

Jesteś naprawdę robi:

window.abc; 

To jest coś, że IE rozpoczął który był naprawdę ubogi wybór projektu.

Zobacz ten great answer to a very very similar question

To naprawdę duplikat ale tytuł nie odzwierciedla tego.

Wypróbuj tę linię w konsoli, aby zobaczyć, co mam na myśli.

(function(){ console.log(this); })(); // logs the Window object 
Powiązane problemy