Vale, solucioné lo del select y lo hice como tú decías, pero ahora me surge un problema. Cuando hago click en el botón Agregar campo, se crean 2, uno para las coordenadas x y otro para las y. Pero si hago click en Eliminar campo, sólo se elimina el campo que está al lado del botón. Con el código creo que se verá mejor:
Código Javascript
:
Ver original// Agregar campos
var n=1;
function ID(id){
return document.getElementById(id);
}
function sAt(elemento, atributo, valor){
elemento.setAttribute(atributo, valor);
}
function addI(e,f){
var c=document.createElement(e),i=document.createElement(e),b=document.createElement(e),a=document.createElement(e),l=document.createElement(f),s=document.createElement(f);
sAt(c,'type','text');
sAt(i,'type','text');
sAt(c,'name','coordx[]');
sAt(i,'name','coordy[]');
sAt(c,'id','cx'+n);
sAt(i,'id','cy'+n);
sAt(c,'size','10');
sAt(i,'size','10');
sAt(c,'class','input');
sAt(i,'class','input');
sAt(a,'type','button');
sAt(b,'type','button');
sAt(a,'onclick',"removeI(this,valor(this));");
sAt(b,'onclick',"removeI(this,valor(this));");
sAt(a,'value','Eliminar campo');
sAt(b,'value','Eliminar campo');
ID('inicio').appendChild(c);
ID('inicio').appendChild(a);
ID('inicio').appendChild(l);
ID('final').appendChild(i);
ID('final').appendChild(b);
ID('final').appendChild(s);
n++;
}
function removeI(c,id){
c.parentNode.removeChild(c.previousSibling);
c.parentNode.removeChild(c);
c.parentNode.removeChild(c.nextSibling);
ID(id).parentNode.removeChild(ID(id).previousSibling);
ID(id).parentNode.removeChild(ID(id));
ID(id).parentNode.removeChild(ID(id).nextSibling);
n--;
}
function valor(c){
var s=c.id.substring(1,2);
var d='c'+(s=='x')?'y':'x'+n;
return d;
}
Código HTML:
Ver original <input type='text' id='cx0' name='coordx[]' size='15'/> <input type='text' id='cy0' name='coordy[]' size='15' /> <input type="button" value="Agregar campo" id='btn' onclick="addI();" />
He probado usando una función (valor) que devoviera el id del campo, pero no me funciona. También me gustaría saber cómo hacer para que a la función sAt() no tuviera que pasarle el elemento como argumento, sino hacer elemento.sAt(atributo,valor).
Saludos (: