Ver Mensaje Individual
  #6 (permalink)  
Antiguo 05/06/2009, 15:05
Avatar de CHuLoSoY
CHuLoSoY
 
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 11 meses
Puntos: 29
Respuesta: Metiendo datos en masa en array con for me dice que el valor es Nulo

Ufff, he avanzado UN POCO. Muchas gracias omar1977. Pero me dice undefined.
Vamos a ver. El código real es este:
Código:
<form name=cosas><div id=dondemeterlista style=overflow-y:auto;overflow-x:hidden;max-height:198;height:198;></div></form>
Al pulsar un botón de crear lista, se activa la siguiente función (que inicia si es ordenada o desordenada:

Código:
function crearLista() {

	var tipolista=document.getElementById("tipolista").value;
	var num=document.getElementById("numentradas").value;
	if(tipolista=="ul") {

		document.getElementById("numentradas").value=Number(num)+1;

		document.getElementById("dondemeterlista").innerHTML="<table width=100% border=0 cellspacing=0 cellpadding=0 style=font-size:9pt;><tr><td width=10% align=center><img src=img/listadesordenada.png border=0></td><td width=90%><input type=text name=dato class=urlhipervinculo style=padding:6px;></td></tr></table>";
		document.getElementById("tipolista").disabled="True";
		document.getElementById("crearlista").disabled="True";
	}
	if(tipolista=="ol") {

		document.getElementById("numentradas").value=Number(num)+1;

		document.getElementById("dondemeterlista").innerHTML="<table width=100% border=0 cellspacing=0 cellpadding=0 style=font-size:9pt;><tr><td width=10% align=center>1.</td><td width=90%><input type=text name=dato class=urlhipervinculo style=padding:6px;></td></tr></table>";
		document.getElementById("tipolista").disabled="True";
		document.getElementById("crearlista").disabled="True";
	}

}
Hasta aquí todo bien, funciona perfecto. Se inicia con 1 dato. Ahora, imagínate que entro un dato y pulso el botón de NUEVO ELEMENTO. Se activa esta función:

Código:
function nuevaEntradaLista() {

//	var tipolista=document.getElementById("tipolista").value;
//	var num=document.getElementById("numentradas").value;

	var frm=document.cosas;

	var datos=new Array();

	for(i=0;i<=frm.dato.length;i++){
		datos[i]=frm.dato[i].value;
	}

 //     frm.dato[i].disabled="True";

	if(tipolista=="ul") {

		document.getElementById("numentradas").value=Number(num)+1;
		var jaumeni=Number(num)+1;
		document.getElementById("dondemeterlista").innerHTML+="<table width=100% border=0 cellspacing=0 cellpadding=0 style=font-size:9pt;><tr><td width=10% align=center><img src=img/listadesordenada.png border=0></td><td width=90%><input type=text name=dato class=urlhipervinculo style=padding:6px;></td></tr></table><a name=abajo"+jaumeni+"></a>";
	}
	if(tipolista=="ol") {

		document.getElementById("numentradas").value=Number(num)+1;
		var jaumeni=Number(num)+1;
		document.getElementById("dondemeterlista").innerHTML+="<table width=100% border=0 cellspacing=0 cellpadding=0 style=font-size:9pt;><tr><td width=10% align=center>"+jaumeni+".</td><td width=90%><input type=text name=dato class=urlhipervinculo style=padding:6px;></textarea></td></tr></table><a name=abajo"+jaumeni+"></a>";
	}


	for(i=0;i<=frm.dato.length;i++){
		frm.dato[i].value=datos[i];
	}

}
Porqué tengo que recoger los datos anteriormente introducidos? Pues porque al hacer un innerHTML+= debería añadir un código a lo existente, y lo que hace es vaciar todos los campos de texto anteriores y añadir otro (no entiendo porqué los vacía). Entonces, cada vez que se añada un campo, necesito recorrer todos los campos de la lista, añadirlos a un array (o donde sea) y después de añadir el nuevo campo que se muestren todos los datos anteriores. PERO NO HAY MANERA.

¿Cómo lo haríais vosotros?
Mil gracias y un saludo.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.