Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] bucle de variables

Estas en el tema de bucle de variables en el foro de Javascript en Foros del Web. 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', ...
  #1 (permalink)  
Antiguo 06/03/2013, 15:22
 
Fecha de Ingreso: agosto-2007
Mensajes: 130
Antigüedad: 16 años, 9 meses
Puntos: 0
bucle de variables

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
  #2 (permalink)  
Antiguo 06/03/2013, 15:47
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: bucle de variables

Toma de referencia esto, es algo parecido a lo que quieres, es parte de mi biblioteca, la unica diferencia es que yo lo llamo con una función recursiva en vez de un bucle, el resultado es el mismo, hacer que una variable indice aumente de valor :

Código Javascript:
Ver original
  1. this.ID++;
  2.        
  3.         capa = document.getElementById('NascadMarquee');
  4.        
  5.         contenedor = document.createElement('div');
  6.         contenedor.id = this.ID;
  7.         contenedor.className = 'O1';
  8.         capa.appendChild(contenedor);
  9.         contenedor.addEventListener("mouseover", function () {ObjectSTDO.AuxiliateZSTDO(this.id);}, false);
  #3 (permalink)  
Antiguo 06/03/2013, 16:14
 
Fecha de Ingreso: agosto-2007
Mensajes: 130
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: bucle de variables

muchas gracias. mañana lo probare.
  #4 (permalink)  
Antiguo 07/03/2013, 01:05
 
Fecha de Ingreso: agosto-2007
Mensajes: 130
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: bucle de variables

mmm...

no acabo de entender como hacer el bucle que me dices, albuss...

de todas maneras, investigando sobre mi codigo veo lo siguiente:

1. este codigo funciona correctamente, lo que quiere decir que las variables se crean

Código:
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:
vd = document.getElementsByTagName('video');
alert(vd.length); //-- salida: 4
3. por separado, todo funciona, pero al ponerle el bucle for no se realizan las funciones llamadas...

Código:
vd = document.getElementsByTagName('video');
var obj = {};
for (i=0;i<vd.length;i++) {
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);
}
cual puede ser la razon de que no funcione el codigo al meterlo en un bucle...?

Última edición por kaquna; 07/03/2013 a las 01:23
  #5 (permalink)  
Antiguo 07/03/2013, 01:36
 
Fecha de Ingreso: agosto-2007
Mensajes: 130
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: bucle de variables

y rizando mas el rizo...

funciona
Código:
	   	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);

		obj['tagObj' + 2] = document.getElementsByTagName("video").item(2);
		obj['div' + 2] = obj['tagObj' + 2].parentNode;	
		obj['tagObj' + 2].addEventListener('progress', function() { getPercentProg(this,obj['div' + 2]); }, false);
		obj['tagObj' + 2].addEventListener('canplaythrough', function() { myAutoPlay(this,obj['div' + 2]); }, false);
no funciona...
Código:
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);
o sea, que debe ser tonteria lo que ocurre para que no funcione...

alguna idea de que puede ocurrir...?
  #6 (permalink)  
Antiguo 07/03/2013, 02:25
 
Fecha de Ingreso: agosto-2007
Mensajes: 130
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: bucle de variables

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.

Etiquetas: bucle, funcion, 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 03:52.