2012-12-01 8 views
6

Mögliche Duplizieren:
document.all vs. document.getElementByIdWas bedeutet Dokument.all?

ich einige alte Code Refactoring von jemand anderem geschrieben. Und ich stieß auf folgenden Codeausschnitt:

if (document.all || document.getElementById) { 
    ... 
} 

Wann wird der Code innerhalb der if-Anweisung ausgeführt?

Vielen Dank!

+1

Lesen Sie diese Frage und Antwort: http://StackOverflow.com/Questions/2408424/Document-all-VS-Document-GetelementByid –

+0

Verwenden von ** 'document.all' ** und **' document.getElementById' * * Ohne Parameter wird "True" zurückgegeben, wenn es in diesem Browser unterstützt wird. Also wird Ihr "if" ausgeführt, wenn ** 'document.all' ** unterstützt wird:' "IE 4 -> 10" ', einige Versionen von' Opera', und vielleicht andere; ** Oder ** wenn ** 'document.getElementById' ** unterstützt wird:' "IE 5 und höher" ',' "Netscape 6 und höher" 'und wahrscheinlich alle modernen Versionen von" Firefox "," Chrome ", "Safari" usw. Das "if" wird *** nicht für "IE <4", "Netscape <6" und einige sehr alte Versionen der meisten anderen Browser ausführen. –

+0

Eigentlich ist das falsch. Heutzutage ist "document.all" aus Gründen der Abwärtskompatibilität falsch, obwohl es immer noch ein Objekt ist. Wenn Sie beispielsweise 'console.log (!! document.all, document.all.length) ausführen, gibt' 'false 1059' 'für mich aus. – Antimony

Antwort

7

document.all() ist eine nicht standardmäßige Methode zum Zugriff auf DOM-Elemente. Es ist von einigen Browsern veraltet. Sie erhalten Zugriff auf alle Unterelemente in Ihrem Dokument.

document.getElementById() ist ein Standard und wird vollständig unterstützt. Jedes Element hat eine eindeutige ID auf dem Dokument.

+2

Verlinkung zu anderen Antworten sollte in Kommentaren erfolgen, außer in Fällen, in denen Sie etwas ganz anderes beantworten und als Referenz hinzufügen –

+0

Vielen Dank für Ihre Antwort. Aber wann genau wird der Code innerhalb der if-Anweisung ausgeführt? In meinem Fall haben sowohl 'document.all' als auch' document.getElementById' keine Parameter wie 'div1'. – user1170330

+0

@ user1170330: Wenn ich richtig verstehe, wird es ausgeführt, wenn der Benutzer JavaScript in seinem Browser aktiviert hat. Auch, wie ich [hier] (http://javascript.about.com/od/hintsandtips/a/worst_4.htm) gelesen habe, scheint es zuerst, wenn Fall für IE4 war. Also, Sie könnten das aus Ihrem Code heraus treten und etwas anderes verwenden, um zu überprüfen, ob der Benutzer JS in seinem Browser aktiviert hat (wie zum Beispiel