Quando utilizzare document.all
rispetto a document.getElementById
?document.all vs. document.getElementById
risposta
document.all
è un'estensione Microsoft proprietaria dello standard W3C.
getElementById()
è standard: utilizzare quello.
Tuttavia, considerare se utilizzare una libreria js come jQuery sarebbe utile. Ad esempio, $("#id")
è l'equivalente jQuery per getElementById()
. Inoltre, è possibile utilizzare i selettori more than just CSS3.
document.all
è molto vecchio, è don't have to use it anymore.
Per citare Nicholas Zakas:
Per esempio, quando il DOM era giovane, non tutti i browser supportati getElementById(), e quindi c'era un sacco di codice che si presentava così:
if(document.getElementById){ //DOM
element = document.getElementById(id);
} else if (document.all) { //IE
element = document.all[id];
} else if (document.layers){ //Netscape < 6
element = document.layers[id];
}
Rimosso link non funzionante a http://simonwillison.net/2003/Aug/11/documentAll/ –
document.all() è un modo non standard di accesso elementi DOM. È stato deprecato da alcuni browser. Ti dà accesso a tutti gli elementi secondari del tuo documento.
document.getElementById() è uno standard e completamente supportato. Ogni elemento ha un ID univoco nel documento.
Se si dispone di:
<div id="testing"></div>
Utilizzando
document.getElementById("testing");
avranno accesso a quella specifica div.
E document.all non sarà supportato da IE11 on!
http://msdn.microsoft.com/en-us/library/ie/ms537434(v=vs.85).aspx
Interessante. Ora che Chrome l'ha adottato, speravo che FF si unisse, ma se anche MS lo lascia, è davvero andato. Ho preferito document.all per la sua brevità: document.all.editor è molto più bello da scrivere e leggere di document.getElementById ("editor"). – citykid
document.querySelectorAll
(e la sua document.querySelector()
variante che restituisce il primo elemento trovato) è molto, molto più potente. Si può facilmente:
- ottenere un'intera collezione con
document.querySelectorAll("*")
, emulando in modo efficace non standarddocument.all
proprietà; - utilizzare
document.querySelector("#your-id")
, emulazione efficace della funzionedocument.getElementById()
; - utilizzare
document.querySelectorAll(".your-class")
, emulazione efficace della funzionedocument.getElementsByClassName()
; - utilizzare
document.querySelectorAll("form")
anzichédocument.forms
edocument.querySelectorAll("a")
anzichédocument.links
; - ed esegui query DOM molto più complesse (utilizzando qualsiasi selettore CSS disponibile) che non possono essere coperte con altri buildin di documenti.
Unified interrogazione API è la strada da percorrere. Anche se lo standard document.all
fosse nello standard, è solo scomodo.
realtà, document.all
è solo minimamente paragonabile a document.getElementById
. Non ne useresti uno al posto dell'altro, non restituiscono le stesse cose.
Se si stava tentando di filtrare attraverso le funzionalità del browser di loro si potrebbe utilizzare come in Marcel Korpel's answer come questo:
if(document.getElementById){ //DOM
element = document.getElementById(id);
} else if (document.all) { //IE
element = document.all[id];
} else if (document.layers){ //Netscape < 6
element = document.layers[id];
}
Ma, funzionalmente, document.getElementsByTagName('*')
è più equivalente a document.all
.
Ad esempio, se si dovesse effettivamente intenzione di utilizzare document.all
per esaminare tutti gli elementi di una pagina, in questo modo:
var j = document.all.length;
for(var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+document.all(i).tagName);
}
usereste document.getElementsByTagName('*')
invece:
var k = document.getElementsByTagName("*");
var j = k.length;
for (var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+k[i].tagName);
}
Non capisco come funziona la notazione document.all (i). Non dovrebbe essere document.all [i]? – DSoa
@DSoa - Dopo alcune ricerche, non sono del tutto sicuro di quale sia corretto, o se in qualche modo, entrambi funzionerebbero. [Questa pagina] (http://www.java2s.com/Tutorial/JavaScript/0280__Document/documentall.htm) usa ** '[i]' ** come ** 'document.all [4] .name' ** e [questa pagina] (http://www.java2s.com/Tutorial/JavaScript/0280__Document/Listallelementsbyreferencethedocumentall.htm) usa ** '(i)' ** come ** 'document.all (i) .tagName' **. –
In particolare, è stato introdotto document.all
per IE4 PRIMA che sia stato introdotto document.getElementById
.
Quindi, la presenza di document.all
significa che il codice è destinato per supportare IE4, o sta cercando di identificare il browser come Internet Explorer 4 (anche se avrebbe potuto essere Opera), o la persona che ha scritto (o copiato e incollato) il codice non era aggiornato al più tardi.
Nell'evento altamente improbabile che è necessario supportare IE4, quindi, è necessario document.all
(o una libreria che gestisce queste antiche specifiche IE).
- 1. document.documentElement vs document.all
- 2. Che cosa significa document.all?
- 3. reactjs this.refs vs document.getElementById
- 4. document.getElementById vs jQuery $()
- 5. sono document.all e document.layers obsoleti ora
- 6. document.getElementById(). Value e document.getElementById(). Checked non funziona per IE
- 7. document.getElementbyId() restituisce null
- 8. Set document.getElementById alla variabile
- 9. Perché document.GetElementById restituisce null
- 10. Conversione di "document.getElementById" in jQuery
- 11. Qual è la differenza tra document.getElementById ('mybox') e mybox?
- 12. document.getElementById restituisce un elemento live dom?
- 13. document.getElementById (''). Src == ??? (È uguale a fallire)
- 14. Crea alias per document.getElementById in Javascript
- 15. JavaScript document.getElementById (“id”) e l'elemento id attributo
- 16. JS document.getElementById esegui al clic del pulsante
- 17. document.getElementById ("tweetform"). Submit non è una funzione?
- 18. TypeError: document.getElementById non è una funzione
- 19. document.getElementById ("test"). Style.display = "hidden" non funziona
- 20. document.getElementById() valore non impostato il valore
- 21. Come scegliere elemento all'interno iframe utilizzando document.getElementById
- 22. document.getElementById ('id') avendo valore in ASP.net JavaScript funzione
- 23. document.getElementById ('btnid'). Disabled non funziona in firefox e chrome
- 24. riferimento ad un elemento da id da solo, senza document.getElementById
- 25. posso usare document.getElementById (someid). Clic per tag a
- 26. Perché document.getElementById ('tableId'). InnerHTML non funziona in IE8?
- 27. document.getelementbyId restituirà null se l'elemento non è definito?
- 28. atachShadow vs createShadowRoot
- 29. Onclick vs addEventListener
- 30. Append Vs AppendChild JQuery
'document.all'? Uomo, * quella * vecchia scuola! –
Vecchia scuola? Ho controllato i miei script e sembrano utilizzare entrambe le opzioni per soddisfare i browser più vecchi. Quindi non è affatto "vecchia scuola", ma è più simile alla programmazione del suono, a dimostrazione del fatto che i produttori di browser che citano questo come errore sono i codificatori più ignoranti e forse inesperti impiegati da Google. – WilliamK
Fun fact: per convenzione empia, 'typeof document.all === 'undefined'' – sam