¿Cuándo debe usar document.all
contra document.getElementById
?document.all vs. document.getElementById
Respuesta
document.all
es una extensión de propiedad de Microsoft para el estándar W3C.
getElementById()
es de uso estándar que.
Sin embargo, considere si usar una biblioteca js como jQuery sería útil. Por ejemplo, $("#id")
es el equivalente de jQuery para getElementById()
. Además, puede usar los selectores more than just CSS3.
document.all
es muy anterior, usted don't have to use it anymore.
Para citar Nicholas Zakas:
Por ejemplo, cuando el DOM era joven, no todos los navegadores compatibles getElemenById(), y así que había un montón de código que se veía así:
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];
}
Se ha eliminado el enlace roto a http://simonwillison.net/2003/Aug/11/documentAll/ –
document.all() es una forma no estándar de acceder a los elementos DOM. Ha quedado obsoleto desde algunos navegadores. Le da acceso a todos los elementos secundarios en su documento.
document.getElementById() es un estándar y totalmente compatible. Cada elemento tiene una identificación única en el documento.
Si usted tiene:
<div id="testing"></div>
Usando
document.getElementById("testing");
tendrá acceso a la div específica.
Y document.all no será compatible con IE11 en!
http://msdn.microsoft.com/en-us/library/ie/ms537434(v=vs.85).aspx
Interesante. Ahora que Chrome lo adoptó, esperaba que FF se uniera, pero si incluso MS lo deja, realmente se ha ido. Preferí document.all por su brevedad: document.all.editor es mucho mejor para escribir y leer que document.getElementById ("editor"). – citykid
document.querySelectorAll
(y su variante document.querySelector()
que devuelve el primer elemento que se encuentra) es mucho, mucho más potente. Usted puede fácilmente:
- obtener una colección entera con
document.querySelectorAll("*")
, emulando efectivamentedocument.all
propiedad no estándar; - usa
document.querySelector("#your-id")
, efectivamente emulando la funcióndocument.getElementById()
; - use
document.querySelectorAll(".your-class")
, efectivamente emulando la funcióndocument.getElementsByClassName()
; - use
document.querySelectorAll("form")
en lugar dedocument.forms
ydocument.querySelectorAll("a")
en lugar dedocument.links
; - y realizar consultas de DOM mucho más complejas (utilizando cualquier selector de CSS disponible) que simplemente no se pueden cubrir con otros documentos incorporados.
Unified querying API es el camino a seguir. Incluso si document.all
estuviera en la norma, es simplemente inconveniente.
En realidad, document.all
sólo es mínimamente comparable a document.getElementById
. No usarías uno en lugar del otro, no devolverían las mismas cosas.
Si estuviera tratando de filtrar a través de capacidades de navegador que usted podría utilizarlos como en Marcel Korpel's answer así:
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];
}
Pero, funcionalmente, document.getElementsByTagName('*')
es equivalente a más document.all
.
Por ejemplo, si en realidad iban a utilizar document.all
para examinar todos los elementos de una página, así:
var j = document.all.length;
for(var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+document.all(i).tagName);
}
que usaría document.getElementsByTagName('*')
lugar:
var k = document.getElementsByTagName("*");
var j = k.length;
for (var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+k[i].tagName);
}
No entiendo cómo funciona la notación document.all (i). ¿No debería ser document.all [i]? – DSoa
@DSoa - Después de algunas investigaciones, no estoy del todo seguro de cuál es la correcta, o si de alguna manera, ambas funcionarían. [Esta página] (http://www.java2s.com/Tutorial/JavaScript/0280__Document/documentall.htm) usa ** '[i]' ** como ** 'document.all [4] .name' ** , y [esta página] (http://www.java2s.com/Tutorial/JavaScript/0280__Document/Listallelementsbyreferencethedocumentall.htm) usa ** '(i)' ** como ** 'document.all (i) .tagName' **. –
Específicamente, document.all
se introdujo para IE4 ANTES document.getElementById
había sido introducido.
Por lo tanto, la presencia de document.all
significa que el código está destinado para apoyar IE4, o está tratando de identificar el navegador como Internet Explorer 4 (aunque podría haber sido Opera), o la persona que escribió (o copiar y pegar) el código no estaba actualizado.
En el caso poco probable de que necesite soportar IE4, entonces, necesita document.all
(o una biblioteca que maneje estas antiguas especificaciones de IE).
- 1. document.documentElement vs document.all
- 2. document.getElementById ("someId") vs. someId
- 3. document.getElementById vs jQuery $()
- 4. ¿Por qué document.all falsy?
- 5. document.getElementById(). Value y document.getElementById(). Checked no funciona para IE
- 6. ¿Es if (document.getElementById ('algo')! = Nulo) idéntico a if (document.getElementById ('algo'))?
- 7. document.getElementbyId() que devuelve nulo
- 8. ¿Por qué document.GetElementById devuelve nulo
- 9. la conversión "document.getElementById" en jQuery
- 10. Conjunto document.getElementById a la variable
- 11. Javascript document.getElementById en otros marcos
- 12. document.getElementById (...). Style.display está en blanco
- 13. ¿Cuál es la diferencia entre document.getElementById ("test"). Valor y document.getElementById ("test"). InnerHTML
- 14. ¿Cuál es la diferencia entre document.getElementById ('mybox') y mybox?
- 15. Mi IE no es compatible con "document.getElementById()"!
- 16. ¿Por qué existe la función document.getElementById()?
- 17. document.getElementById ("tweetform"). ¿Enviar no es una función?
- 18. Crear alias a document.getElementById en Javascript
- 19. JS: ¿Cómo hacer document.getElementById cross-browser?
- 20. document.getElementById (''). Src == ??? (Es igual a FAIL)
- 21. Cuál es mejor - Ext.get() o document.getElementById()
- 22. document.getElementById() valor de retorno definido en cromo
- 23. document.getElementById ('id') Valor de fracasar en ASP.net función javascript
- 24. puedo usar document.getElementById (someid) .onclic en la etiqueta a
- 25. ¿Por qué querySelector ('# id') asigna a document.getElementById ('id')?
- 26. ¿Por qué document.getElementById ('tableId'). InnerHTML no funciona en IE8?
- 27. desenfoque() vs. onBlur()
- 28. checked = "checked" vs checked = true
- 29. ¿Por qué se debe anular el objeto para IE después de que fue document.getElementById-ed?
- 30. Cuál es la diferencia entre $ doc.getElementById ("id") y document.getElementById ("id") en JSNI
'document.all'? Hombre, * eso es * vieja escuela! –
Old school? Revisé mis scripts y parece que usan ambas opciones para que los buscadores más antiguos sean atendidos. Así que eso no es en absoluto "vieja escuela", sino más bien una programación de sonido, que muestra que los fabricantes de navegadores que lo citan como un error son los codificadores más ignorantes y posiblemente inexpertos empleados por Google. – WilliamK
Dato curioso: según una convención impía, 'typeof document.all === 'undefined'' – sam