Newsgroup: it.comp.lang.javascript
Titolo: aggiungere un nodo tr in una tabella

Sto studiando le operazioni sul DOM e vorrei aggiungere e togliere
l'ultima riga ad una tabella.
Ho provato a duplicarla (per iniziare) ma mi sono incastrato...
Avete qualche esempio?
il mio codice:
<body>
	<table border="1" id="tabella">
		<tr id="tr1">
			<td id="c1">r1 c1 </td>
			<td id="c2">r1 c2 </td>
		</tr>
		<tr id="tr2">
			<td>r2 c1 </td>
			<td>r2 c2 </td>
		</tr>
		<tr id="tr3">
			<td>r3 c1 </td>
			<td>r3 c2 </td>
		</tr>
	</table>
 
	<input type="button" name="evento" 
onclick="aggiungi(document.getElementById('tabella'));" value="evento"/>
</body>
il mio script:
<script>
	function aggiungi(tb){
 
		var rows=document.getElementsByTagName("tr").length;
 
		alert(rows);
 
 
		var riga= tb.lastChild;
 
		alert(riga);
 
		tb.appendChild(riga);
 
	}
</script>
Grazie
Marcello



anzitutto l'elemento html a cui "appendere" elementi <tr> non e' il <table>,
ma il <tbody> (questo sconosciuto). in seconda istanza, non stai duplicando
proprio niente: tu non fai altro che prendere il riferimento al primo figlio
della tabella (il <tbody> appunto) e riappiccicarglielo; guarda tu stesso
cosa fa il tuo script aggiungendo una riga:
function aggiungi(tb){
   var rows=document.getElementsByTagName("tr").length;
   var riga= tb.lastChild;
   tb.removeChild(riga); // rimuove l'elemento...
   alert(riga.outerHTML);
   tb.appendChild(riga); // e lo riaggiunge
}
l'approccio e' prendere il riferimento al tbody e aggiungergli una nuova
riga:
<body>
<script type="text/javascript">
<!--
function aggiungi(tb)
{
   tr0 = new el('tr');
alert(tr0.outerHTML);
   tr0.appendChild(new el('td', 'r4 c1'));
alert(tr0.outerHTML);
   tr0.appendChild(new el('td', 'r4 c2'));
alert(tr0.outerHTML);
   tb.appendChild(tr0);
}
function el(type, html)
{
   var el = document.createElement(type);
   if (html)
	el.innerHTML = html;
   return el;
}
//-->
</script>
   <table border="1" id="tabella">
      <tbody id="tbo">
         <tr id="tr1">
            <td id="c1">r1 c1 </td>
            <td id="c2">r1 c2 </td>
         </tr>
         <tr id="tr2">
            <td>r2 c1 </td>
            <td>r2 c2 </td>
         </tr>
         <tr id="tr3">
            <td>r3 c1 </td>
            <td>r3 c2 </td>
         </tr>
      </tbody>
   </table>
 
   <input type="button" name="evento"
onclick="aggiungi(document.getElementById('tbo'));" value="evento"/>
</body>
--
</artemis:alpeia>
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 al primo figlio
pardon, all'_ultimo_ figlio
..non si sa mai, potrebbe esserci zer0 nei paraggi :))
--
artemis.alpeia


 ..non si sa mai, potrebbe esserci zer0 nei paraggi :))
"l'onnipresente" zer0, prego. 8)
.. veglio solo su di voi, miei cari "figliuoli".. :D
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Il computer e' una macchina progettata per velocizzare e automatizzare
gli errori.
Now playing: "Avril Lavigne - Don't Tell Me"

 }
Uhm, fai un po' di miscuglio tra tecnica non-w3c standard (innerHTML) e dom
w3c.. :) Scegline una. :)
Per quanto mi riguarda quando devo duplicare una riga, mi tengo un elemento
TR prototipo da clonare, con l'affettuoso id di "dolly". Risparmi un sacco
di istruzioni, e' molto piu' flessibile e generalizzato (se cambi struttura
alla tabella, non devi cambiare lo script).
P.S. Mi sfugge la firma:
</artemis:alpeia>
Non vedo alcun xmlns dischiarato, ne' l'apertura del tag relativo :P
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
..ma in effetti il concetto di WYSYWYG (quello che vedi e' quello che
ottieni)
si applica ai computer malissimo, cosi' come si applica alle donne...
(The Real Programmer)


 Non vedo alcun xmlns dischiarato, ne' l'apertura del tag relativo :P
eccolo qua:
<artemis:alpeia xmlns:artemis="
http://utenti.lycos.it/artemis
">


 <artemis:alpeia xmlns:artemis="
http://utenti.lycos.it/artemis
">
Eh, ma dove stava? ^_^
Mi chiedevo, perche' la chiusura del tag come firma, sembrava che tu
l'avessi aperto prima.. ma non lo trovavo.. Pensavo piu' logico un:
<artemis:alpeia />
oppure, proprio per dare l'url al proprio sito, qualcosa tipo:
<artemis:alpeia 
	xmlns:artemis="
http://utenti.lycos.it/artemis
"
/>
Mhm. Quasi quasi cambio firma.. 8D
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
I feel like I'm diagonally parked in a parallel universe.
Now playing: "No more chances"

 Mhm. Quasi quasi cambio firma.. 8D
voglio una vacaaaaanzaaaaaaaa!! :D
--
artemis.alpeia


 Ma no dai.. 8) che nedici di una firma del genere? 8)
Scusate per l'orribile quoting di prima, oggi ci son meno del solito con la
capoccia..
-- 
C'ya,
  ZER0 :: coder.gfxer.webDesigner();
Non esistono donne brutte. Dipende solo da quanta vodka bevi.
(proverbio russo)
Now playing: "turrican 2-remix"