Autor Tema: Curso JavaScript CU01128E acceder a nodos del DOM con firstChild y nodeValue  (Leído 4901 veces)

hs.serna1235

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Hola, estoy intentando realizar el ejercicio de la entrega 28 del curso de JavaScript. Mi problema esta en querer cambiar los nodeValues a ingles. Esto es lo que tengo de codigo,
cuando intento revisar los node values de los elementos creados en el array elementosLabel[] el valor de estos es null. No se que estoy haciendo mal, agradeceria ayuda. Muchas Gracias.


Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo DOM - aprenderaprogramar.com</title>
<meta charset="utf-8">
<style type="text/css">
body {background-color:white; font-family: sans-serif;}
label {color: maroon; display:block; padding:5px;}
</style>
<script type="text/javascript">
function cambiarAspecto(elemento) {
var elementosObtenidos = document.getElementsByTagName(elemento);
elementosObtenidos[0].style.backgroundColor = '#FF6633';
elementosObtenidos[1].style.backgroundColor = '#FF9933';
elementosObtenidos[2].style.backgroundColor = '#FFCC33';

}
</script>
<script type="text/javascript">
function cambiarIngles(elemento) {
var elementosLabel = document.getElementsByTagName(elemento);

elementosLabel[0].firstChild.nodeValue = 'Name';
elementosLabel[1].firstChild.nodeValue = 'Surname';
elementosLabel[2].firstChild.nodeValue = 'E-mail';

alert('hooa'+elementosLabel[0].firstChild.nodeValue);
}
</script>
</head>
<body>
<div id="cabecera">
<h1>Portal web aprenderaprogramar.com</h1>
<h2>Didáctica y divulgación de la programación</h2>
</div>
<!-- Formulario de contacto -->
<div style="width:450px;">
<form name ="formularioContacto" class="formularioTipo1" method="get" action="accion.html" onclick="cambiarAspecto('label')">
<p>Si quieres contactar con nosotros envíanos este formulario relleno:</p>
<label for="nombre"><span>Nombre:</span> <input id="nombre" type="text" name="nombre" /></label>
<label for="apellidos"><span>Apellidos:</span> <input id="apellidos" type="text" name="apellidos" /></label>
<label for="email"><span>Correo electrónico:</span> <input id="email" type="text" name="email" /></label>
<label>
<input type="submit" value="Enviar">
<input type="reset" value="Cancelar">
</label>
</form>
</div>
<br></br>
<div>
<input type="submit" value="Cambiar Ingles" onclick="cambiarIngles('label')">
<br></br>
<input type="submit" value="Cambiar Español">
</div>
</body>
</html>
« Última modificación: 08 de Enero 2015, 15:46 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Es un poco lioso (más adelante en el curso de ve cómo hacerlo más simple), pero lo cierto es que estás buscando en un nodo equivocado, y por eso no obtienes el resultado esperado.

Fíjate en la imagen que aparece en la entrega CU01124E, ahí ves que tienes que llegar al nodo span y luego al hijo del span, que es el nodo de texto que contiene el nodeValue.

elementosLabel[0] te da el label

elementosLabel[0].firstChild te da el nodo span

elementosLabel[0].firstChild.firstChild te da el nodo texto hijo del span

elementosLabel[0].firstChild.firstChild.nodeValue te da el texto que quieres modificar

Y el ejemplo de cómo se aplicaría:


Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo DOM - aprenderaprogramar.com</title>
<meta charset="utf-8">
<style type="text/css">
body {background-color:white; font-family: sans-serif;}
label {color: maroon; display:block; padding:5px;}
</style>
<script type="text/javascript">
function cambiarAspecto(elemento) {
var elementosObtenidos = document.getElementsByTagName(elemento);
elementosObtenidos[0].style.backgroundColor = '#FF6633';
elementosObtenidos[1].style.backgroundColor = '#FF9933';
elementosObtenidos[2].style.backgroundColor = '#FFCC33';

}
</script>
<script type="text/javascript">
function cambiarIngles(elemento) {
var elementosLabel = document.getElementsByTagName(elemento);

elementosLabel[0].firstChild.firstChild.nodeValue = 'Name';
elementosLabel[1].firstChild.firstChild.nodeValue = 'Surname';
elementosLabel[2].firstChild.firstChild.nodeValue = 'E-mail';

alert(elementosLabel[0].firstChild.firstChild.nodeValue+'hooa'+elementosLabel[0].nodeValue);
}
</script>
</head>
<body>
<div id="cabecera">
<h1>Portal web aprenderaprogramar.com</h1>
<h2>Didáctica y divulgación de la programación</h2>
</div>
<!-- Formulario de contacto -->
<div style="width:450px;">
<form name ="formularioContacto" class="formularioTipo1" method="get" action="accion.html" onclick="cambiarAspecto('label')">
<p>Si quieres contactar con nosotros envíanos este formulario relleno:</p>
<label for="nombre"><span>Nombre:</span> <input id="nombre" type="text" name="nombre" /></label>
<label for="apellidos"><span>Apellidos:</span> <input id="apellidos" type="text" name="apellidos" /></label>
<label for="email"><span>Correo electrónico:</span> <input id="email" type="text" name="email" /></label>
<label>
<input type="submit" value="Enviar">
<input type="reset" value="Cancelar">
</label>
</form>
</div>
<br></br>
<div>
<input type="submit" value="Cambiar Ingles" onclick="cambiarIngles('label')">
<br></br>
<input type="submit" value="Cambiar Español">
</div>
</body>
</html>

En resumen, el texto es un hijo del span, y el span es un hijo del label.

Saludos

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Cuando tengas el código funcionando bien pégalo por favor...

hs.serna1235

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 4
    • Ver Perfil
Muchas Gracias Alex con tu ayuda ahora si pude realizar el ejercicio. Gracias, aca esta el codigo....
Código: [Seleccionar]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Ejemplo DOM - aprenderaprogramar.com</title>
<meta charset="utf-8">
<style type="text/css">
body {background-color:white; font-family: sans-serif;}
label {color: maroon; display:block; padding:5px;}
</style>
<script type="text/javascript">
function cambiarAspecto(elemento) {
var elementosObtenidos = document.getElementsByTagName(elemento);
elementosObtenidos[0].style.backgroundColor = '#FF6633';
elementosObtenidos[1].style.backgroundColor = '#FF9933';
elementosObtenidos[2].style.backgroundColor = '#FFCC33';

}
</script>
<script type="text/javascript">
function cambiarIngles(elemento) {
var elementosLabel = document.getElementsByTagName(elemento);

elementosLabel[0].firstChild.firstChild.nodeValue = 'Name';
elementosLabel[1].firstChild.firstChild.nodeValue = 'Surname';
elementosLabel[2].firstChild.firstChild.nodeValue = 'E-mail';

}
</script>
</head>
<body>
<div id="cabecera">
<h1>Portal web aprenderaprogramar.com</h1>
<h2>Didáctica y divulgación de la programación</h2>
</div>
<!-- Formulario de contacto -->
<div style="width:450px;">
<form name ="formularioContacto" class="formularioTipo1" method="get" action="accion.html" onclick="cambiarAspecto('label')">
<p>Si quieres contactar con nosotros envíanos este formulario relleno:</p>
<label for="nombre"><span>Nombre:</span> <input id="nombre" type="text" name="nombre" /></label>
<label for="apellidos"><span>Apellidos:</span> <input id="apellidos" type="text" name="apellidos" /></label>
<label for="email"><span>Correo electrónico:</span> <input id="email" type="text" name="email" /></label>
<label>
<input type="submit" value="Enviar">
<input type="reset" value="Cancelar">
</label>
</form>
</div>
<br></br>
<div>
<input type="submit" value="Cambiar Ingles" onclick="cambiarIngles('label')">
<br></br>
<input type="submit" value="Cambiar Español">
</div>
</body>
</html>

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Ok, gracias!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".