Foros del Web » Programando para Internet » Javascript »

listener

Estas en el tema de listener en el foro de Javascript en Foros del Web. Hola. Mi duda es la siguiente: Quise obtener el índice de elemento al que le hago click según se recoja en el array al hacer ...
  #1 (permalink)  
Antiguo 29/05/2011, 16:38
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
listener

Hola.
Mi duda es la siguiente:
Quise obtener el índice de elemento al que le hago click según se recoja en el array al hacer el getElementsByName.

... Pensé que al hacer el for y obtener la variable i podría sacar si había hecho clic en el elemento 0,1,2 ... etc, pero siempre obtengo la longitud máxima del array.

Es obvio que hago algo mal, pero pensaba que algo tan tonto como esto no requeriría más. Estoy espeso

Simplifico el código y dejo lo esencial por si no me expliqué correctamente.

Código HTML:
<input type="radio" name="rd" /> <br />
<input type="radio" name="rd" /> <br />
<input type="radio" name="rd" /> <br />
<input type="radio" name="rd" /> <br />

<script type="text/javascript">

function addListener(element, type, expression){
	if(element.addEventListener)
		element.addEventListener(type, expression, false);
	else if(element.attachEvent)
		element.attachEvent('on'+type, expression);
	else return false;
}

var obj = document.getElementsByName('rd');

function addEvent(){
	/*for(var i in obj)*/
    for(i=0; i<obj.length; i++)
        addListener(obj[i], 'click', function(){alert(i);}); // no muestra 0,1,2,3 sino siempre 4
}
window.onload = addEvent;

</script> 
Espero que alguien pueda decirme que es lo que no estoy teniendo en cuenta.
Un saludo.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #2 (permalink)  
Antiguo 29/05/2011, 17:21
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 12 años, 11 meses
Puntos: 343
Respuesta: listener

Sos victima de una malvada especie de djinns llamada 'Closure'

Código Javascript:
Ver original
  1. function addEvent(){
  2.     for(i=0; i<obj.length; i++) {
  3.         // Ejecutamos una funcion anonima que recibe como unico
  4.         // argumento el indice i
  5.         (function(index) {         
  6.             addListener(obj[index], 'click', function(){alert(index);});       
  7.         })(i);
  8.     }
  9. }
__________________
blog | @aijoona
  #3 (permalink)  
Antiguo 30/05/2011, 02:48
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: listener

Cita:
Iniciado por Aijoona Ver Mensaje
Sos victima de una malvada especie de djinns llamada 'Closure'

Código Javascript:
Ver original
  1. function addEvent(){
  2.     for(i=0; i<obj.length; i++) {
  3.         // Ejecutamos una funcion anonima que recibe como unico
  4.         // argumento el indice i
  5.         (function(index) {         
  6.             addListener(obj[index], 'click', function(){alert(index);});       
  7.         })(i);
  8.     }
  9. }
Ayy mi cabeza... Efectivamente karma++;
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Etiquetas: listener
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 21:10.