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.