Ciao!
Ok, ho provato a fare come mi hai detto...però ci sono altri errori!
Ho corretto:
codice:
var elimina1 = document.getElementsById('myTr'+counter);
in
codice:
var elimina1 = document.getElementById('myTr'+counter);
Poi ho messo come hai detto tu, il contatore sopra tutte le funzioni (utilizzo un file esterno javascript, l'ho messo proprio in alto), ho scritto la tua funzione per eliminare un campo e modificato l'inserzione così:
codice:
var counter = 0;
function campi(id, completo)
{ // id 0: Modulo 1/\ id 1: Modulo 2 \\
if(id == 0)
{
// siccome effettivamente lui cerca sempre di eliminare un campo
// anche se questo non è stato creato, al primo id, dalla pagina stessa
// mando come completo = 1, in modo che (teoricamente) non provvede
// ad eliminare il campo....anche se sembra che questo passaggio non lo
// vede proprio...
if(completo != 1)
{
deleteCampi();
}
var trContenitore=document.createElement("TR");
var tdC1=document.createElement("TD");
var p = document.createElement("P");
var tdC2=document.createElement("TD");
var inputC1=document.createElement("INPUT");
var text = document.createTextNode('Nome Amministratore');
p.appendChild(text);
inputC1.setAttribute("type","text");
inputC1.setAttribute("id","nomefrm");
inputC1.setAttribute("name","nome");
tdC1.appendChild(p);
tdC2.appendChild(inputC1);
trContenitore.setAttribute("id","myTr"+counter);
trContenitore.appendChild(tdC1);
trContenitore.appendChild(tdC2);
document.getElementById('tabella').getElementsByTagName('TBODY')[1].appendChild(trContenitore);
counter++;
}else{
// stessa cosa di prima....
if(completo != 1)
{
deleteCampi();
}
var trContenitore=document.createElement("TR");
var tdC1=document.createElement("TD");
var p = document.createElement("P");
var tdC2=document.createElement("TD");
var inputC1=document.createElement("INPUT");
var text = document.createTextNode('Nome Amministratore 2');
p.appendChild(text);
inputC1.setAttribute("type","text");
inputC1.setAttribute("id","nomefrm");
inputC1.setAttribute("name","nome");
tdC1.appendChild(p);
tdC2.appendChild(inputC1);
trContenitore.setAttribute("id","myTr"+counter);
trContenitore.appendChild(tdC1);
trContenitore.appendChild(tdC2);
document.getElementById('tabella').getElementsByTagName('TBODY')[1].appendChild(trContenitore);
counter++;
}
}
function deleteCampi()
{
var elimina1 = document.getElementById('myTr'+counter);
elimina1.parentNode.removeChild(elimina1);
counter--;
return true;
}
Purtroppo si, ho bisogno di utilizzare 2 campi che si aggiungono o si levano nella tabella, quindi pensavo di usare getElementsByTagName('TBODY')[1] e getElementsByTagName('TBODY')[2]...non funziona così?
Fatto sta, che provando con firefox poi mi viene questo errore:
Errore: elimina1 is null
File sorgente: ******.js
Riga: 62
Nella pagina dove mi server, ho provato a richiamare lo script inizialmente dando come completo = 0, in modo che non passasse subito all'eliminazione degli altri campi che tanto non ci sono ancora, e poi ogni volta passava come completo = 1 così' eliminava anche gli altri campi...posto la funzione..
codice:
[....]
// il file esterno l'ho già richiamato sopra...passando come secondo valore 1
// teoricamente non dovrebbe passare all'eliminazione dei campi...ma lo fa lo stesso
<script language="javascript">campi(1,1);</script>
[....]
<input name="radiobutton" type="radio" value="1" checked="checked" onclick="javascript:campi(1,0);">Modulo 1
<input name="radiobutton" type="radio" value="2" onclick="javascript:campi(0,0);"/>Modulo 2
[...]
// questi sono i due tbody che mi servono per i due campi aggiuntivi...
<tbody></tbody>
<tbody></tbody>
Heeeelp!