not - html javascript getelementbyid
document.all vs. document.getElementById (7)
En realidad, document.all
solo es mínimamente comparable con document.getElementById
. No usarías uno en lugar del otro, no devolverían las mismas cosas.
Si intentas filtrar a través de las capacidades del navegador, puedes utilizarlas como en share como esta:
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 más equivalente a document.all
.
Por ejemplo, si realmente usara document.all
para examinar todos los elementos en 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);
}
en su lugar, usaría document.getElementsByTagName(''*'')
:
var k = document.getElementsByTagName("*");
var j = k.length;
for (var i = 0; i < j; i++){
alert("Page element["+i+"] has tagName:"+k[i].tagName);
}
¿Cuándo debería usar document.all
vs. document.getElementById
?
Específicamente, document.all
se introdujo para IE4 ANTES de que document.getElementById
se haya introducido.
Entonces, la presencia de document.all
significa que el código está diseñado para soportar IE4 , o está tratando de identificar el navegador como IE4 (aunque podría haber sido Opera), o la persona que escribió (o copió y pegó) el código wasn Estoy al tanto de lo último.
En el caso poco probable de que necesite soportar IE4, entonces necesita document.all
(o una biblioteca que maneje estas antiguas especificaciones de IE).
Y document.all no será compatible con IE11 en!
http://msdn.microsoft.com/en-us/library/ie/ms537434(v=vs.85).aspx
document.all
es muy antiguo, ya no tienes que volver a usarlo .
Para citar a Nicholas Zakas :
Por ejemplo, cuando DOM era joven, no todos los navegadores admitían getElementById (), por lo 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];
}
document.all
es una extensión de propiedad de Microsoft al estándar W3C.
getElementById()
es estándar; úsalo.
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 más que simples selectores de CSS3 .
document.querySelectorAll
(y su variante document.querySelector()
que devuelve el primer elemento encontrado) es mucho, mucho más potente. Tu puedes fácilmente:
- obtener una colección completa con
document.querySelectorAll("*")
, emulando de manera efectiva la propiedaddocument.all
no estándar; - use
document.querySelector("#your-id")
, emulando efectivamente la funcióndocument.getElementById()
; - use
document.querySelectorAll(".your-class")
, emulando efectivamente la funcióndocument.getElementsByClassName()
; - utilice
document.querySelectorAll("form")
lugar dedocument.forms
, ydocument.querySelectorAll("a")
lugar dedocument.links
; - y realice cualquier consulta de DOM mucho más compleja (utilizando cualquier selector de CSS disponible) que simplemente no pueda ser cubierto con otros documentos incorporados.
La API de consultas unificadas es el camino a seguir. Incluso si document.all
estuviera en el estándar, es inconveniente.
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>
Utilizando
document.getElementById("testing");
Tendrán acceso a ese div específico.