Comunidad de diseño web y desarrollo en internet online

bucle de variables secuenciales

Citar            
MensajeEscrito el 06 Mar 2013 09:22 pm
hola a tod@s

tengo estas lineas de codigo que funcionan perfectamente:

Código :

tagObj0 = document.getElementsByTagName("video").item(0);
      div0 = tagObj0.parentNode;   
      tagObj0.addEventListener('progress', function() { getPercentProg(this,div0) }, false);
      tagObj0.addEventListener('canplaythrough', function() { myAutoPlay(this,div0) }, false);
      
      tagObj1 = document.getElementsByTagName("video").item(1);
      div1 = tagObj1.parentNode;   
      tagObj1.addEventListener('progress', function() { getPercentProg(this,div1) }, false);
      tagObj1.addEventListener('canplaythrough', function() { myAutoPlay(this,div1) }, false);
      
      tagObj2 = document.getElementsByTagName("video").item(2);
      div2 = tagObj2.parentNode;   
      tagObj2.addEventListener('progress', function() { getPercentProg(this,div2) }, false);
      tagObj2.addEventListener('canplaythrough', function() { myAutoPlay(this,div2) }, false);
      
      tagObj3 = document.getElementsByTagName("video").item(3);
      div3 = tagObj3.parentNode;   
      tagObj3.addEventListener('progress', function() { getPercentProg(this,div3) }, false);
      tagObj3.addEventListener('canplaythrough', function() { myAutoPlay(this,div3) }, false);


como hago para meterlo dentro de un bucle? he probado con varias opciones pero ninguna me funciona...

por ejemplo:

Código :

for (i = 0; i < vd.length; i++) {  
      tagObj = window['tagObj' + i];
      div = window['div' + i];
       
      tagObj = document.getElementsByTagName("video").item(i);
      div = tagObj.parentNode;   
      tagObj.addEventListener('progress', function() { getPercentProg(this,div) }, false);
      tagObj.addEventListener('canplaythrough', function() { myAutoPlay(this,div) }, false);
      
   }

(tambien usando la forma eval('tagObj' + i), no me funciona)

o esta otra...

Código :

tagObj = [];
div = [];
for (i = 0; i < vd.length; i++) {        
      tagObj[i] = document.getElementsByTagName("video").item(i);
      div[i] = tagObj[i].parentNode;   
      tagObj[i].addEventListener('progress', function() { getPercentProg(this,div[i]) }, false);
      tagObj[i].addEventListener('canplaythrough', function() { myAutoPlay(this,div[i]) }, false);
      
   }


alguna ayuda?

milchisimas gracias

Por kaquna

68 de clabLevel



Genero:Femenino  

safari
Citar            
MensajeEscrito el 07 Mar 2013 07:38 am
investigando sobre mi codigo veo lo siguiente:

1. este codigo funciona correctamente, lo que quiere decir que las variables se crean (punto solucionado: la creacion de variables secuenciales)

Código Javascript :

var obj = {};
i = 0;
obj['tagObj' + i] = document.getElementsByTagName("video").item(i);
obj['div' + i] = obj['tagObj' + i].parentNode;   
obj['tagObj' + i].addEventListener('progress', function() { getPercentProg(this,obj['div' + i]); }, false);
obj['tagObj' + i].addEventListener('canplaythrough', function() { myAutoPlay(this,obj['div' + i]); }, false);


2. para hacer el bucle, recojo la longitud por otra variable:

Código Javascript :

vd = document.getElementsByTagName('video');
alert(vd.length); //-- salida: 4


3. por separado, todo funciona

Código Javascript :

obj['tagObj' + 0] = document.getElementsByTagName("video").item(0);
obj['div' + 0] = obj['tagObj' + 0].parentNode;   
obj['tagObj' + 0].addEventListener('progress', function() { getPercentProg(this,obj['div' + 0]); }, false);
obj['tagObj' + 0].addEventListener('canplaythrough', function() { myAutoPlay(this,obj['div' + 0]); }, false);

obj['tagObj' + 1] = document.getElementsByTagName("video").item(1);
obj['div' + 1] = obj['tagObj' + 1].parentNode;   
obj['tagObj' + 1].addEventListener('progress', function() { getPercentProg(this,obj['div' + 1]); }, false);
obj['tagObj' + 1].addEventListener('canplaythrough', function() { myAutoPlay(this,obj['div' + 1]); }, false);

...


4. pero al sustituir el valor por una variable para hacer bucle, deja de funcionar... incluso el codigo siguiente no funciona...

Código Javascript :

i = 0;
obj['tagObj' + i] = document.getElementsByTagName("video").item(i);
obj['div' + i] = obj['tagObj' + i].parentNode;   
obj['tagObj' +i].addEventListener('progress', function() { getPercentProg(this,obj['div' + i]); }, false);
obj['tagObj' + i].addEventListener('canplaythrough', function() { myAutoPlay(this,obj['div' + i]); }, false);
i = 1;
obj['tagObj' + i] = document.getElementsByTagName("video").item(i);
obj['div' + i] = obj['tagObj' + i].parentNode;   
obj['tagObj' + i].addEventListener('progress', function() { getPercentProg(this,obj['div' + i]); }, false);
obj['tagObj' + i].addEventListener('canplaythrough', function() { myAutoPlay(this,obj['div' + i]); }, false);
i = 2;
obj['tagObj' + i] = document.getElementsByTagName("video").item(i);
obj['div' + i] = obj['tagObj' + i].parentNode;   
obj['tagObj' + i].addEventListener('progress', function() { getPercentProg(this,obj['div' + i]); }, false);
obj['tagObj' + i].addEventListener('canplaythrough', function() { myAutoPlay(this,obj['div' + i]); }, false);


alguna idea de que puede ocurrir...?

milchisimas gracias

Por kaquna

68 de clabLevel



Genero:Femenino  

safari
Citar            
MensajeEscrito el 07 Mar 2013 08:38 am
bueno, creo que el bucle de variables (titulo del tema) esta solucionado. simplemente se crea un objeto y se sigue asi:

Código :

var obj = {};

for (i=0;i<10;i++) {
    obj['variable' + i] = i + 100;
}


como parece que el problema que estaba teniendo era otro, creo que relacionado con el control de video, doy por solucinado el tema y abrire otro con el problema del video.

muchas gracias y disculpad las molestias.

Por kaquna

68 de clabLevel



Genero:Femenino  

safari

 

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