Foros del Web » Programando para Internet » Javascript »

porque siempre lee/envia el ultimo bucle

Estas en el tema de porque siempre lee/envia el ultimo bucle en el foro de Javascript en Foros del Web. Hola a todos! La verdad no entiendo este error!! dentro de un for creo dinamicamente varios divs con registros, antes de terminar cada bucle le ...
  #1 (permalink)  
Antiguo 01/09/2009, 10:49
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
porque siempre lee/envia el ultimo bucle

Hola a todos!
La verdad no entiendo este error!!
dentro de un for creo dinamicamente varios divs con registros, antes de terminar cada bucle le asigno un evento.
Para abreviarles codigo utilicé el indice del for (i), porque obtengo mismos resultados

divA.addEventListener("click",function(event){
//this hace referencia al div dentro de éste bucle
id = this.id.substring(6);//quita los caracteres y me quedo con un numero
description = i;
selectionCallback(id, description);
}, false);

selectionCallback solo muestra lo que recibio, el id del div(registro) clickeado, pero en description simpre toma digamos el valor correspondiente al ultimo bucle, en este caso eran 5 registros, entonces siempre envia como parametro ese 5?????
en vez de 0,1,2,3, 4
__________________
I am Doyle please insert code.

Última edición por doylelives; 01/09/2009 a las 11:02
  #2 (permalink)  
Antiguo 01/09/2009, 15:41
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: porque siempre lee/envia el ultimo bucle

Hola

En este primer ejemplo no se concantena, la variable se va sobre escribiendo

Código javascript:
Ver original
  1. var descripcion = "";
  2. for (var i = 0; i < 5; i++) {
  3. descripcion = i
  4. }
  5. alert (descripcion);

ahora prueba este otro. Como puedes ver se concatenando

Código javascript:
Ver original
  1. var descripcion = "";
  2. for (var i = 0; i < 5; i++) {
  3. descripcion += i
  4. }
  5. alert (descripcion);

Suerte
__________________
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;" />
  #3 (permalink)  
Antiguo 02/09/2009, 10:30
 
Fecha de Ingreso: junio-2008
Ubicación: Capital Federal xD
Mensajes: 1.208
Antigüedad: 15 años, 10 meses
Puntos: 35
Respuesta: porque siempre lee/envia el ultimo bucle

En mi ejemplo si se concatena correctamente!!
envia el id del bucle actual pero no la descripcion del bucle actual sino ultima.
no me gusta pone mucho codigo pero en este caso quizas sea lo mejor para que me entiendan:
(el resto del codigo esta bien, funciona bien)
Código PHP:
for (0oRecordValues.lengthi++) {
        var 
divA document.createElement("div");
        
divA.setAttribute("class","recordResult_container");
        
divA.setAttribute("id","record"+oRecordValues[i].getAttribute("id"));
        
        var 
divB document.createElement("div");
        
divB.setAttribute("class","recordResult_title");
        var 
table1 document.createElement("table");
        var 
tr1 document.createElement("tr");
        
tr1.setAttribute("class","bold");
        var 
description="";
        for (
0arrayTitle.lengthj++) {
            
recordChild oRecordValues[i].getElementsByTagName(arrayTitle[j]);
            var 
td1 document.createElement("td");
            var 
newText1 document.createTextNode(recordChild[0].childNodes[0].nodeValue);
            
td1.appendChild(newText1);
            
tr1.appendChild(td1);
            
table1.appendChild(tr1);
        
separo los campos con un guion
            description
+=recordChild[0].childNodes[0].nodeValue+" - ";
        }
        
        
divA.addEventListener("click",function(event){
        
//this hace referencia a divA
        
id this.id.substring(6);
        
//un ejemplo de description que posee los campos obtenidos en el for de arriba
        //101 - analisis de sangre -
        //ahora quito los ultimos 3 caracteres extras ( - )
        
description description.substring(0,description.length-3);
        
selectionCallback(iddescription);
        }, 
false);
        
        for (
0arrayDescr.lengthj++) {
            
recordChild oRecordValues[i].getElementsByTagName(arrayDescr[j]);
            var 
tr2 document.createElement("tr");
            var 
td1 document.createElement("td");
            var 
newText1 document.createTextNode(recordChild[0].nodeName+":");
            
td1.appendChild(newText1);
            var 
td2 document.createElement("td");
            var 
newText2 document.createTextNode(recordChild[0].childNodes[0].nodeValue);
            
td2.appendChild(newText2);
            
tr2.appendChild(td1);
            
tr2.appendChild(td2);
            
table1.appendChild(tr2);
        }
        
divB.appendChild(table1);
        
divA.appendChild(divB);
        
oFinderResults.appendChild(divA);
    } 
el problema en esta linea, el id siempre es diferente pero la descripcion siempre le envia la del ultimo bucle.
selectionCallback(id, description);
__________________
I am Doyle please insert code.

Última edición por doylelives; 02/09/2009 a las 10:40
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:21.