Comunidad de diseño web y desarrollo en internet online

porque me dice undefined

Citar            
MensajeEscrito el 16 Oct 2010 05:38 pm
hola foreros :)

Código Javascript :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Documento sin t&iacute;tulo</title> 
</head> 
<body>
<p>caca</p>
<p name="Morbi">Morbi</p>
<script type="text/javascript">
<!--
// creamos una variable
var parrafos = document.getElementsByName("Morbi");
document.write(parrafos.innerHTML);
//-->
</script> 
</body> 
</html>

porque me dice undefined :?

Por caqca

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Oct 2010 06:41 pm
Realmente no es por culpa de Javascript sino porque el elemento "p" no tiene un atributo "name", usa el id y getElementById en vez de getElementsByName

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 16 Oct 2010 06:47 pm
Porque parrafos no es un objeto, es una colección de objetos y tú lo estás usando como si fuera uno solo. La solución es

Código Javascript :

document.write(parrafos[0].innerHTML);

Porque quieres el contenido del primer nodo (el cero).
Debes tener en cuenta que el método getElementsByTagName() devuelve TODOS los nodos que tienen el nombre que le pasas como parámetro (nota que el método está en plural), aunque en el DOM haya solo uno, sigue siendo una colección de un solo elemento.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 16 Oct 2010 06:53 pm
Tienes toda la razón DriveOp. getElementsByName devuelve un array con todos los elementos coincidentes con el nombre, no un sólo objeto

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 16 Oct 2010 06:55 pm
The Fricky!:
Observa que en el doctype está indicando que el documento es XML (XHTML), en XML los tags pueden tener los atributos que quieras, que el navegador los entienda o no, es otro tema, pero da la casualidad que el atributo name sí lo entiende JavaScript y no tiene ningún problema en encontrarlos.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 16 Oct 2010 07:27 pm
ok ok.. no la etiqueta p no tiene el elemento name ¿pero con un formulario? :evil:

Código Javascript :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>
<body>

<form method="post" action="" >
<input type="text" name="caca"/>
<input type="text" name="caca"/>
<input type="button" onclick="morbi ()" value="yo"/>
</form>
<script type="text/javascript">
<!--
function morbi()
{
var caca=document.getElementsByName("caca[0]");
document.write(caca.innerHTML);
}
//-->
</script>
</body>
</html>


Porque me dice undefined :shock:

Por caqca

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Oct 2010 07:42 pm
Por lo que te ha dicho DriverOp, lo que es un array es el resultado de getElementsByName, entonces su función "morbi" debería ser:

Código Javascript :

function morbi() 
{ 
var caca=document.getElementsByName("caca"); 
document.write(caca[0].innerHTML); 
} 


si quieres saber el valor de todos los elementos, deberás recores el Array "caca" con un bucle.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 16 Oct 2010 07:52 pm
y porque cuando ejecuto el codigo no me recoge los datos del formulario @_@ ??????

algun ejemplo basico de como usar la funcion getElementsByName ???????

Por caqca

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Oct 2010 07:57 pm
jaaj ya me corrio en lugar de usar innerHTML lo cambie por un value

Por caqca

13 de clabLevel



 

firefox
Citar            
MensajeEscrito el 16 Oct 2010 08:06 pm
caqca:
Si lo que quieres es tomar el valor de un input en particular, los cuales no son párrafos (es un tag que no es contenedor de otros tags ni de texto) y por lo tanto no tienen "innerHTML", simplemente asignale un "id" y obten su valor usando getElementById. Así:

Código HTML :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Documento sin t&iacute;tulo</title> 
<script type="text/javascript"> 
function morbi() { 
var caca=document.getElementById("caca1"); 
var valores=document.getElementById("valores");
valores.innerHTML = caca.value;
} 
</script> 
</head> 
<body> 

<form method="post" action="" > 
<input type="text" name="caca1" id="caca1" /> 
<input type="text" name="caca2" id="caca2" /> 
<input type="button" name="caca3" id="caca3" onclick="morbi();" value="yo"/> 
</form>
<p>El valor obtenido es: <span id="valores"></span></p>
</body> 
</html>

Nota que el <span> sí es un tag contenedor. Además el tag <input> tiene atributo "value" aunque no se lo pongas explícitamente.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 16 Oct 2010 08:33 pm
gRACIAS BRO ERES TODO UN CRACK

Por caqca

13 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.