Pregunta

Esta pregunta puede parecer una tontería, pero lo que es la diferencia entre el acceso a un elemento (con id "someId") usando document.getElementById ( "someId") vs. simplemente escribiendo someId?

por ejemplo:

document.getElementById("someId").style.top = "12px";

vs

someId.style.top = "12px";

Aquí hay un ejemplo de código http://jsfiddle.net/pRaTA/ (me pareció que doesn' t trabajo en Firefox)

¿Fue útil?

Solución

La diferencia es que mientras someId funciona en algunos navegadores, document.getElementById("someId") en realidad cumple con el estándar W3C.

Otros consejos

La declaración de un identificador de elemento DOM no significa que está disponible como una variable global en todos los navegadores. La forma compatible única cruz para conseguir que se va a hacer en primer lugar.

var someId = document.getElementById("someId");

Editar Hice este código de prueba que verifica que los navegadores basados ??en WebKit parecen hacer el id disponible como var sin antes declararlo. De acuerdo con esta , también IE mostrará este comportamiento .

  • Firefox: Objeto / indefinido
  • Safari: objeto / objeto
  • Chrome: objeto / objeto
  • IE: objeto / objeto (verificado)

Código:

 <html>
    <head>
    </head>
 <body>
   <div id="foo"></div>
   <script type="text/javascript">

     alert("getElementById: "+typeof document.getElementById("foo"));
     alert("as a var: "+typeof foo);

   </script>
 </body>

En el cliente de script del lado, hacemos document.getElementById para obtener el obj elemento de la página web. Para recuperar el elemento particular de la DOM y sus propiedades y métodos, es necesario utilizar el método getElemenById. En Jquery puede simplemente hacer var objX = $ ( '# id')

Cuando, como escribir directamente ID no va a hacer el trabajo. Porque ¿cómo va a extraer el elemento obj del DOM sin atravesar el documento. método document.getElementById tirará del elemento de información del documento. Espero que esto tenga algún sentido.

El uso de sólo el someId es una vieja manera de seleccionar un elemento (creo que esto fue implementado por el IE). document.getElementById es el estándar que funciona en todos los navegadores.

Teniendo en cuenta el escenario que sólo son compatibles con los viejos navegadores IE. document.getElementById es aún más fiable y fácil de leer. Fiable si está utilizando todos los números de documentos de identidad.

por ejemplo:

input element id="123"

document.getElementById('123').value; // this one works
123.value; // this one doesn't

Acceso a elementos como propiedades del objeto global llamado así por el ID del elemento (el segundo ejemplo) es una comodidad que se originó en IE y ha sido copiado por Safari y Chrome. Es una idea muy mala y no debe usarlo. La cuestión principal es nombrar colisiones (por ejemplo, elementos con ids perfectamente válidas tales como "alerta" o "documento").

document.getElementById(), por otro lado, es estándar DOM establecido a largo y, aparte de algunos defectos iE idiotas , es infalible. Siempre utilizarlo en preferencia a la otra forma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top