Ho una tabella con n righe. Vorrei eliminare tutte le righe tranne le prime due, cioè, tranne l'intestazione e la prima riga, utilizzando javascript ed il DOM
Mi potreste aiutare?![]()
Grazie![]()
Ho una tabella con n righe. Vorrei eliminare tutte le righe tranne le prime due, cioè, tranne l'intestazione e la prima riga, utilizzando javascript ed il DOM
Mi potreste aiutare?![]()
Grazie![]()
Pietro
Vuoi proprio eliminarle, o ti basta nasconderle?
In quest'ultimo caso lo fai applicando il valore 'none' all'attributo display del CSS relativo:
document.getElementById('ID_DEL_TR').style.display = 'none';
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
in questo caso mi serve eliminare proprio le righeOriginariamente inviato da Mich_
Vuoi proprio eliminarle, o ti basta nasconderle?
In quest'ultimo caso lo fai applicando il valore 'none' all'attributo display del CSS relativo:
document.getElementById('ID_DEL_TR').style.display = 'none';![]()
Pietro
Credo che la cosa migliore sia quindi acquisire tutto il codice HTML della tabella, lavorare (con una RE od altro) sul codice e riscriverlo:
Nota: funziona solo in browser recenti.codice:var tabella = document.getElementById('ID_TABLE').innerHTML; tabella = tabella.replace(/((:?\<tr.+?/tr\>){2}).*$/$1/); document.getElementById('ID_TABLE').innerHTML = tabella;
La RE potrebbe essere da rivedere (occorre verificare che esista in JS la parentesi (:? ).
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
Ti ringrazio. Non posso utilizzarlo. Ti spiego.
Da server costruisco la tabella: metto la intestazione con 2 colonne, ed una riga, prima colonna un nome, seconda colonna contiene un <input per l'immissione di dati.
Da client, incremento via DOM, le righe della tabella.
Adesso, un tasto AZZERA, deve azzerarmi tutti i controlli del form, compreso le righe aggiunte alla tabella che non posso vedere nel codice html (almeno credo)
Perciò, così come la creo, così la distruggo:
per funzionare funziona. Ma mi piacerebbe un giudizio, visto che è la prima volta che faccio cose similicodice:var i; var t = document.getElementById("tbl_soggetti"); if(t != null) { var nr = t.childNodes[0].childNodes.length; //cancella le righe tranne le prime 2 for(i = nr -1; i >= 2; i--) { t.childNodes[0].removeChild(t.childNodes[0].childNodes[i]); } //cancella il testo della 2° colonna, 2° riga t.childNodes[0].childNodes[1].childNodes[1].childNodes[0].value = ""; }![]()
Pietro
Stai facendo una cosa molto piu` complessa di quanto io immaginassi.
Comunque nella tua tabella ci sono anche dei campi, che quindi appartengono alla tabella ma anche al form.
Con il tuo metodo li elimini dalla tabella (cioe`, credo, elimini il <td> in cui sono inseriti, ma non i campi).
Se vuoi verificare cosa succede, inserisci, dopo il tuo, questo script:
var ff = document.NOMEFORM;
var ss = '';
for(var i=0; i<ff.length; i++) {
ss += ff.elements[i].name + "=" + ff.elements[i].value + "\n";
}
alert (ss);
(ho supposto i campi di tipo text)
Nota che ho usato volutamente i nomi dei campi e non getElementById(); comunque anche nelle prossime versioni di XHTML/JS saranno accettati (a differenza degli altri nomi che sono deprecati).
Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
No domande tecniche in messaggi privati
funziona con IE ma non con Mozilla e NN
![]()
studierò il tuo codice, grazie![]()
Pietro
Prova questo
codice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Untitled</title> <script language="JavaScript" type="text/javascript"> <!-- function deleteRows(aTable) { len = aTable.rows.length; for (i=len-1;i>=2;i--) { aTable.deleteRow(i); } // for (i=len-1;i=1;i--) } //--> </script> </head> <body> <table summary="" id="t"> <tr> <td>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</td> </tr> <tr> <td>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</td> </tr> <tr> <td>cccccccccccccccccccccccccccccccccc</td> </tr> <tr> <td>dddddddddddddddddddddddddddddddddd</td> </tr> <tr> <td>eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee</td> </tr> <tr> <td>ffffffffffffffffffffffffffffffffff</td> </tr> <tr> <td>ggggggggggggggggggggggggggggggggggg</td> </tr> </table> <input type="button" value="clicca" onclick="deleteRows(document.getElementById('t'))"> </body> </html>
funziona, sia con IE sia con mozilla![]()
![]()
Pietro