Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    elimire righe da una tabella

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    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

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente 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';
    in questo caso mi serve eliminare proprio le righe
    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Credo che la cosa migliore sia quindi acquisire tutto il codice HTML della tabella, lavorare (con una RE od altro) sul codice e riscriverlo:
    codice:
    var tabella = document.getElementById('ID_TABLE').innerHTML;
    tabella = tabella.replace(/((:?\<tr.+?/tr\>){2}).*$/$1/);
    document.getElementById('ID_TABLE').innerHTML = tabella;
    Nota: funziona solo in browser recenti.

    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

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    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:
    codice:
    	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 = "";
    	}
    per funzionare funziona. Ma mi piacerebbe un giudizio, visto che è la prima volta che faccio cose simili
    Pietro

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    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

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    funziona con IE ma non con Mozilla e NN

    studierò il tuo codice, grazie
    Pietro

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    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>

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    funziona, sia con IE sia con mozilla

    Pietro

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.