Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Problema creazione tabelle via DOM con IE

    Salve
    Ho fatto questa paginetta per provare la creazione al volo di tabelle tramite le funziioni javascript di manipolazione del DOM:
    codice:
    <html>
    <head>
    <script>
    function disegna()
    	{
    	var d = document;
    
    	var cnt = d.getElementById("cnt");
    
    	var tbl = d.createElement("table"); //creo la tabella
    
    	var tr = d.createElement("tr"); //creo una riga
    
    	var c = d.createElement("td"); //creo una colonna
    
    	var t = d.createTextNode("prova"); //creo un nodo di testo
    
    	c.appendChild(t);  //metto il testo nel td
    
    	tr.appendChild(c); //metto il td nel tr
    
    	tbl.appendChild(tr);  //metto il tr nella table
    	alert(tbl.childNodes.length);
    
    	cnt.appendChild(tbl);  //inserisco la table nel div
    	alert(cnt.childNodes.length);
    
    	}
    </script>
    </head>
    <body>
    <input type="button" onClick="disegna();" value="crea">
    
    <div id="cnt">
    </div>
    </body>
    </html>
    In Firefox, cliccando sul bottone appare la scritta "prova", la tabella cioè viene creata e visualizzata correttamente.
    Coe IE6 però non capita niente: il browser non lamenta errori di javascript, gli alert che ho piazato nel js per debug mi dicono che i vari nodi sono creati nel numero giusto, ma il testo non compare...
    Qcuno mi sa dire come mai?

  2. #2
    Ok, ho risolto, in IE bisogna necessariamente aggiungere anche un nodo di tipo tbody... Con quello, funziona tutto.

  3. #3

    Re: Problema creazione tabelle via DOM con IE

    prova anche a usare tabella.insertRow(-1) e riga.insertCell(-1) , per snellire il codice:
    codice:
    <html>
    <head>
    <script>
    function disegna()
    	{
    	var d = document;
    
    	var cnt = d.getElementById("cnt");
    
    	var tbl = d.createElement("table"); //creo la tabella
    
    	var tr = tbl.insertRow(-1); //inserisce una riga e ritorna un riferimento alla riga inserita
    
    	var td = tr.insertCell(-1); //inserisce una colonna e ritorna un riferimento alla colonna inserita
    
    	var t = d.createTextNode("prova"); //creo un nodo di testo
    
    	td.appendChild(t);  //metto il testo nel td
    
    	//il td si trova già nel tr
    
    	//il tr si trova già nella table
    	alert(tbl.childNodes.length);
    
    	cnt.appendChild(tbl);  //inserisco la table nel div
    	alert(cnt.childNodes.length);
    
    	}
    </script>
    </head>
    <body>
    <input type="button" onClick="disegna();" value="crea">
    
    <div id="cnt">
    </div>
    </body>
    </html>

  4. #4
    Grazie del suggerimento
    Il parametro -1 a cosa serve?

  5. #5
    a inserire la riga in quel posto(...... )

    Il paramentro è obbligatorio,altrimenti genera un errore.
    Dando -1, la riga viene sempre inserita all'ultimo posto, un po' come quando fai tabella.appendChild(riga).
    Se vuoi inserirla in un punto specifico di una tabella che ha già altre righe, gli dai l'indice desiderato.

  6. #6

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.