Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/05/2014, 05:03
aprendiz94
Invitado
 
Mensajes: n/a
Puntos:
Duda al recoger atributos

Hola, estoy siguiendo unos cursos de JavaScript y tengo una duda. En muchos ejemplos donde recogen un atributo de una etiqueta/elemento, muestran códigos como este:

ejercicios.js
Código Javascript:
Ver original
  1. var elemento = document.getElementById("enlace");
  2. var direccion = elemento.href;
  3. alert(direccion);

Código HTML:
<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="utf-8">
        <title>Ejercicios JavaScript</title>
        <script src="js/ejercicios.js"></script>
    </head>

    <body>
        <a id="enlace" href="http://www.forosdelweb.com">Enlace</a>
    </body>
</html> 
Resulta que eso no me funciona. Para que ese código funcione tengo que invocarlo antes por ejemplo poniéndolo en una función y llamándola desde el HTML con onclick (no me gusta poner JavaScript en el HTML, ya voy a buscar otras formas):

Código Javascript:
Ver original
  1. function mostrarValorAtributo() {
  2.     var elemento = document.getElementById("enlace");
  3.     alert(elemento.href);
  4. }

Código HTML:
<a id="enlace" href="http://www.forosdelweb.com" onclick="mostrarValorAtributo(); return false();">Enlace</a> 
Bueno de esa forma funciona, poniéndolo en una función y llamándola después (sé que puedo ejecutar el código de varias maneras, sólo es un ejemplo), pero en todos lados muestran que con el primer código debería funcionar automáticamente, a mí al menos me parece lógico, porque algo como esto sí funciona:

var cadena = "Soy un string.";
alert(cadena);

No sé si es porque al DOM le trata de una manera diferente o por otra cosa que no estoy entendiendo bien. Ya probé con getAttribute y pasa lo mismo, también haciendo muchos cambios al código. Pero sólo pasa cuando recojo los atributos, con otras cosas del DOM funciona sin tener que llamarlo antes.


Edito: buscando un poco más encontré que se suele usar window.onload = function() {} para hacer funcionar el código cuando se carga la página. Aunque todavía no entiendo porqué en las mayorías de los tutoriales omiten eso. Todavía me quedaron algunas dudas de cómo funciona, mientras vaya explorando seguro voy a darme cuenta.

Última edición por aprendiz94; 04/05/2014 a las 07:16