Foros del Web » Programando para Internet » Javascript »

¿como se guarda en una variable el name de un objeto?

Estas en el tema de ¿como se guarda en una variable el name de un objeto? en el foro de Javascript en Foros del Web. Hola buenas, mi duda es si hay algun modo de guardar en una variable el name o el id de un objeto, estilo el className. ...
  #1 (permalink)  
Antiguo 23/06/2010, 01:53
 
Fecha de Ingreso: mayo-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
¿como se guarda en una variable el name de un objeto?

Hola buenas, mi duda es si hay algun modo de guardar en una variable el name o el id de un objeto, estilo el className.

var variable=document.getElementById("asdf").className ;

He probado asi a lo cutre cambiarle envez de className ponerle name o id y al mostrar con un alert la variable me dice "undefined".
  #2 (permalink)  
Antiguo 23/06/2010, 03:34
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: ¿como se guarda en una variable el name de un objeto?

Hola:

En primer lugar, asegúrate de que existen esos atributos, porque el id se recoge sin problemas, aunque el name puede ser algo problemático en los elementos generados dinámicamente.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 23/06/2010, 04:54
 
Fecha de Ingreso: mayo-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
Respuesta: ¿como se guarda en una variable el name de un objeto?

Gracias por contestar caricatos :)

He mirado los atributos y en teoria los tengo bien . De todas formas estoy activando la funcion con un button no se si eso tendra algo que ver.

Lo que tengo es:

Código:
//En el html

<div id="6" name="ultimanoticia" class="visible">
	<p>
		Noticia 6
	</p>
</div>
<div id="5" class="visible">
	<p>
		Noticia 5
	</p>
</div>
<div id="4" class="visible">
	<p>
		Noticia 4
	</p>
</div>
<div id="3" class="oculto">
	<p>
		Noticia 3
	</p>
</div>
<div id="2" class="oculto">
	<p>
		Noticia 2
	</p>
</div>
<div id="1" class="oculto">
	<p>
		Noticia 1
	</p>
</div>

<input type="button" value="Ver Mas" onclick="cambianoticia()" />

//Y en el js

function cambianoticia(){

	var iduno=document.getElementsByName("ultimanoticia").id;
	alert(iduno);

}
Lo que quiero hacer es lo siguiente.

En la web quiero poner 3 noticias y al pinchar en el boton estas tres se oculten y se muestren las 3 anteriores a estas. Lo que no se es si lo estoy encarando desde un buen punto de vista. Cada vez que escribiese una noticia nueva ponerle el name="ultimanoticia" para sacar el id y asi jugar con ellos para hacer el cambio de clase a las 3 que se estan mostrando y luego a las 3 anteriores a estas.
  #4 (permalink)  
Antiguo 25/06/2010, 07:04
 
Fecha de Ingreso: mayo-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
Respuesta: ¿como se guarda en una variable el name de un objeto?

Algun buen samaritano puede echarme una mano? xD
  #5 (permalink)  
Antiguo 25/06/2010, 07:08
 
Fecha de Ingreso: septiembre-2003
Mensajes: 65
Antigüedad: 20 años, 7 meses
Puntos: 1
Respuesta: ¿como se guarda en una variable el name de un objeto?

var variable=document.getElementById("asdf").getAttrib ute("name"); Creo que va simplemente con var variable=document.getElementById("asdf").name; o con id
  #6 (permalink)  
Antiguo 25/06/2010, 07:16
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: ¿como se guarda en una variable el name de un objeto?

De entrada los ids y los name no pueden empezar con un número, así que es normal que te dé error.
Saludos (:
  #7 (permalink)  
Antiguo 25/06/2010, 07:50
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: ¿como se guarda en una variable el name de un objeto?

Cita:
Iniciado por _cronos2 Ver Mensaje
De entrada los ids y los name no pueden empezar con un número, así que es normal que te dé error.
Saludos (:
Eso no es así. El nombre de una variable es la que no puede empezar por un dígito

Cita:
<script type="text/javascript">
function funcion() {
alert(document.getElementById('6').innerHTML);
}
</script>

<input type="button" onclick="funcion()" value="ver" />
<div id="6" name="ultimanoticia" class="visible">
<p>
Noticia 6
</p>
</div>
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 25/06/2010, 08:08
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿como se guarda en una variable el name de un objeto?

Me temo que _cronos2 tiene razón con respecto a id y name: http://www.w3.org/TR/html401/types.html#type-name
  #9 (permalink)  
Antiguo 25/06/2010, 08:20
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: ¿como se guarda en una variable el name de un objeto?

Cita:
Iniciado por Panino5001 Ver Mensaje
Me temo que _cronos2 tiene razón con respecto a id y name: http://www.w3.org/TR/html401/types.html#type-name
Vaya, por unos momentos me has puesto en duda. Pero no, después de probarlo en IE, FF, Opera y Chrome

Código Javascript:
Ver original
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <script type="text/javascript">
  5. function funcion() {
  6. alert(document.getElementById('6').innerHTML);
  7. }
  8. </script>
  9. </head>
  10. <body>
  11. <input type="button" onclick="funcion()" value="ver" />
  12. <div id="6" name="ultimanoticia" class="visible">
  13. <p>
  14. Noticia 6
  15. </p>
  16. </div>
  17. </body>
  18. </html>
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 25/06/2010, 08:22
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: ¿como se guarda en una variable el name de un objeto?

En viejas versiones de explorer no funcionaba. De todas maneras, aunque funcione en algunos navegadores es incorrecto y tampoco hay que confiarse en que aunque ahora funcione eso vaya a mantenerse.
  #11 (permalink)  
Antiguo 25/06/2010, 08:26
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: ¿como se guarda en una variable el name de un objeto?

No digo que sea correcto. Todo esto ha venido a lo que comentaba @_cronos2 de que el error era ese. A mi no se me ocurría hacerlo
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #12 (permalink)  
Antiguo 25/06/2010, 09:08
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: ¿como se guarda en una variable el name de un objeto?

Cierto, el error no era ese. No lo había probado pero como el Mozilla me lo detecta como 'error' cuando hay un número como id pensé que sería eso...
Lo siento :D
  #13 (permalink)  
Antiguo 27/06/2010, 19:45
 
Fecha de Ingreso: mayo-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
Respuesta: ¿como se guarda en una variable el name de un objeto?

Gracias a todos por contestar :)

He provado el quitar los numeros a los id y ponerle letras, pero sigue saliendo el mismo error, luego prove lo que puso gurthgor y si buscaba eso gracias ;). Aunque lo que ha dejado panino5001 me intriga, w3c no acepta que un id empiece por numero?
  #14 (permalink)  
Antiguo 28/06/2010, 09:01
Avatar de Tecna  
Fecha de Ingreso: enero-2010
Mensajes: 291
Antigüedad: 14 años, 3 meses
Puntos: 45
Respuesta: ¿como se guarda en una variable el name de un objeto?

Buenas,

en el primer código que mostraste, la función cambianoticia() da error porque el método getElementsByName devuelve un array aunque sea de un único elemento ya que el atributo name si se puede repetir, por tanto deberías referirte a los elementos de iduno a través de su índice, iduno[0], iduno[1]..

Por otro lado y como ya bien se ha dicho los id no pueden comenzar por un número y producirían un error en la validación html y además que los estilos css se ignoren si se declara un DTD correcto, que es lo recomendable. En javascript no produce error porque lo que se recibe del html (el atributo id entre otras cosas) siempre es texto y el argumento que espera el método getElementById es del tipo cadena, además javascript se toma la libertad de cambiar el tipo si es necesario y si se pasara un número como argumento de getElementById lo convertiría en cadena, con lo que ya no empezaría por un número y por eso funciona, aunque sea incorrecto. Pero a veces puede haber resultados inesperados por el resultado de la conversión de número a cadena cuando se obtiene el id dinamicamente. Siguiendo el ejemplo de antes, si el id es el número 6 se convierte a la cadena '6' y no hay problema, pero si el número fuera 06 se convertiría en la cadena '6' y el resultado no sería el esperado. Por ejemplo:

Código HTML:
Ver original
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <script type="text/javascript">
  4. function funcion() {
  5. alert(document.getElementById('6').id); // muestra 6. El id es la cadena'6'
  6. alert(document.getElementById(6).id);  // muestra 6 El numero 6 se transforma en la cadena '6'
  7. alert(document.getElementById('06').id);  // muestra 06 El id es la cadena '06'
  8. alert(document.getElementById(06).id);  // muestra 6 y deberia mostrar 06
  9. document.getElementById(06).innerHTML = 'deberia cambiar el contenido del elemento con id 06 pero cambia el de id 6';
  10. // porque hace el la conversion del numero 06 y el 0 se ignora
  11.  
  12.  
  13. document.getElementById('06').innerHTML = 'asi si que cambia el que debe porque se convierte en una cadena correctamente';
  14. // porque al poner las comillas el 0 también forma parte de la cadena
  15.  
  16. var iduno=document.getElementsByName("ultimanoticia");
  17. alert (iduno[0].id);  // muestra 6
  18. }
  19.  
  20. </head>
  21. <input type="button" onclick="funcion()" value="ver" />
  22. <div id="6" name="ultimanoticia" class="visible">
  23. <p>
  24. Noticia 6
  25. </p>
  26. </div>
  27. <div id="06" name="ultimanoticia" class="visible">
  28. <p>
  29. Noticia 06
  30. </p>
  31. </div>
  32. </body>
  33. </html>

es sólo un ejemplo de los problemas que puede causar y por qué aparentemente no da error en javascript puesto que lo convierte en cadena pero es incorrecto según el estandar html y la especificación css, que es donde se define.
  #15 (permalink)  
Antiguo 28/06/2010, 16:11
 
Fecha de Ingreso: mayo-2010
Mensajes: 26
Antigüedad: 14 años
Puntos: 0
Respuesta: ¿como se guarda en una variable el name de un objeto?

Gracias por la info Tecna ;).

De todos modos, estoy enfocando esto bien? ¿O deberia usar base de datos para mostrar las noticias? Porque visto que lo que estoy pensando se salta de todo... xD

Etiquetas: objeto, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:51.