![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
Ciao a tutti!! Nell'applicazione che sto costruendo, ho bisogno di poter generare una riga in una tabella alla pressione di un tasto, ad esempio "aggiungi"... In questa riga ci saranno diverse celle con all'interno diversi campi di input... E' fattibile ma non semplicissimo. Inizia a cercare con google un po' di |
#3
| |||
| |||
|
|
E' fattibile ma non semplicissimo. Inizia a cercare con google un po' di esempi (il primo che ho trovato è questo: http://www.swish-db.com/tutorials/view.php/tid/381) Soprattutto occorrono sintassi diverse a seconda della compatibilità che richiedi, e l'aggiunta del tag input è un po' un pacco per un bug di IE. Cerca un po' e fai un po' di esperimenti, poi posta eventuali problemi. Grazie mille! Ho risolto facendo come nell'esempio... |



#4
| |||
| |||
|
|
Ora il mio problema e' un altro... e' possibile cancellare righe che non vengono create al volo ma che già esistono nativamente nell'html? Boh, io normalmente le nascondo |

|
Ad esempio... per cancellare la riga creata uso una funzione fatta cosi': function delLav(id) { document.getElementById("tblInsLav").removeChild(i d); idlavs -=1; } idlavs e' una mia variabile... e la funzione viene richiamata con un evento onClick: delLav(document.getElementById('lav"+idlavs+"') ora... nella pagina html nativa ho una riga standard... tr id="nome" /tr se faccio un link con il medesimo evento onClick e gli associo delLav(document.getElementById('nome')) non va... la console js di ff mi dice che non trova il nodo... L'onclick è sulla riga stessa? del tipo (metti sia una immagine dentro una |
|
AH! Per il baco di IE non ho problemi... tanto faccio girare tutto su Firefox e non c'e' possibilità che venga cambiato browser ![]() Pregiato |
#5
| |||
| |||
|
|
Boh, io normalmente le nascondo (document.getElementById("tblInsLav").style.displa y="none" ![]() |
) e a me se uno mi cancella una riga e'
|
L'onclick è sulla riga stessa? del tipo (metti sia una immagine dentro una td dentro una tr) onclick=delLav(this.parentNode.parentNode) come si comporta? Comunque sia, in generale, c'è qualcosa che non va se non trova l'oggetto (quel "nome" non è che è proprio il name? Perché devi ovviamente usare l'id, non il name). Se è il name devi cambiare con document.getElementsByName('nome')[0] |

#6
| |||
| |||
|
|
No quel "nome" e' proprio l'id... lo setto esattamente nello stesso modo in cui lo setto quando aggiungo una riga al volo... quindi e' corretto dato che la riga generata al volo viene cancellata... E allora c'è qualche altro problema |
|
Cmq ho risolto in un'altra maniera... ho fatto un'altra funzione che fa cosi': function delRow(id) Questo id è la posizione ordinale della riga, vero? il nome del parametro |
#7
| |||
| |||
|
|
E allora c'è qualche altro problema Boh non so... ho provato anche a fare un bell'alert prima del removechild... e |
|
Cmq ho risolto in un'altra maniera... ho fatto un'altra funzione che fa cosi': function delRow(id) Questo id è la posizione ordinale della riga, vero? il nome del parametro "id" è fuorviante... |
#8
| |||
| |||
|
|
Grazie mille! Ho risolto facendo come nell'esempio... Oddio, per me era un po' piu' complicato perche' nelle celle della riga c'erano tag input e tag a... e' venuta fuori una funzione un po' lunghetta... ma va che e' una meraviglia ![]() |
|
Ho fatto anche una funzione che cancella la riga e va pure quella... Ora il mio problema e' un altro... e' possibile cancellare righe che non vengono create al volo ma che già esistono nativamente nell'html? |
|
Ad esempio... per cancellare la riga creata uso una funzione fatta cosi': function delLav(id) { document.getElementById("tblInsLav").removeChild(i d); idlavs -=1; } |
#9
| |||
| |||
|
|
Per questo genere di cose ti conviene "clonare" un nodo che funge da prototipo. Il codice JS si riduce notevolmente. Ci avevo pensato... |
|
Se "tblInsLav" è l'ID di una tabella stai sbagliando, nel momento in cui "id" è un elemento TR. Un elemento TR non è figlio diretto di un elemento TABLE, bensì suo nipote. E' figlio di TBODY, che a sua volta è figlio di table. Anche se nel codice HTML tu non lo specifichi, è implicito. Un'occhiata al DOM Inspector dovrebbe chiarirti meglio la struttura di una tabella. Una possibile riscrittura della tua funzione è la seguente: function delLav ( el ){ el.parentNode.removeChild(el); } |
|
N.B. Ho letto che usi firefox, in alcune versioni di IE questa sintassi mi dava talvolta problemi, risolvibili ponendo il riferimento all'elemento genitore in una variabile di appoggio: function delLav ( el ){ var pn=el.parentNode; pn.removeChild(el); } |
#10
| ||||||
| ||||||
|
|
Ci avevo pensato... mi potresti postare un esempio? grazie! |
|
Poi pero' come si comporta nel momento del submit? alla stessa maniera di come faccio io ora? |
|
Una possibile riscrittura della tua funzione è la seguente: function delLav ( el ){ el.parentNode.removeChild(el); } GRAZIE! Cosi' facendo riesco anche a cancellare le righe da html statico! |
|
Mi devo guardare bene il DOM Inspector... anche se sinceramente non ci capisco molto... |
|
Ok, terro' presente anche questo, nel caso dovessero' mai mettersi ad usare IE... |
|
Esistono libri che trattano in maniera esauriente il DOM? |
![]() |
| Thread Tools | |
| Display Modes | |
| |