Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/07/2010, 20:06
Avatar de Panino5001
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: Superposicion de variables

Ýo lo que creo que está sucediendo es algo como esto:
Código PHP:
<!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=iso-8859-1" />
<
title>Documento sin t&#237;tulo</title>
<script>
onload=function(){
    var 
f=document.createDocumentFragment();
    for(var 
i=0;i<5;i++){
        var 
d=document.createElement('div');
        
d.appendChild(document.createTextNode('test'+i));
        
d.style.cursor='pointer';
        
d.onclick=function(){alert(i);}
        
f.appendChild(d);
    }
    
document.body.appendChild(f);
}
</script>
</head>

<body>
</body>
</html> 
Observarás que al hacer click sobre los elementos siempre aparece el mismo número en el alert.
Si es eso, se soluciona envolviendo la asignación del evento en una función anónima y ejecutándola dentro del bucle:
Código PHP:
<!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=iso-8859-1" />
<
title>Documento sin t&#237;tulo</title>
<script>
/*onload=function(){
    var f=document.createDocumentFragment();
    for(var i=0;i<5;i++){
        var d=document.createElement('div');
        d.appendChild(document.createTextNode('test'+i));
        d.style.cursor='pointer';
        d.onclick=function(){alert(i);}
        f.appendChild(d);
    }
    document.body.appendChild(f);
}*/
onload=function(){
    var 
f=document.createDocumentFragment();
    for(var 
i=0;i<5;i++){
        var 
d=document.createElement('div');
        
d.appendChild(document.createTextNode('test'+i));
        
d.style.cursor='pointer';
        (function(
i){
            
d.onclick=function(){alert(i);}})(i);
        
f.appendChild(d);
    }
    
document.body.appendChild(f);
}
</script>
</head>

<body>
</body>
</html>