View Full Version : [Javascript] Assurdo!
satoshi2005
16-04-2007, 09:18
Qualcuno mi sa dire perché il seguente codice funziona su firefox ma su ie no?
<html>
<head>
<script type="text/javascript">
function carica() {
var a = document.createElement("table");
var b = document.createElement("tr");
var c = document.createElement("td");
c.innerHTML = "asd";
b.appendChild(c);
a.appendChild(b);
document.body.appendChild(a);
}
</script>
</head>
<body onload="carica();">
</body>
</html>
Grazie, sato
Qualcuno mi sa dire perché il seguente codice funziona su firefox ma su ie no?Su IE i tag TABLE/TR/TD ci sono, vengono creati (garantisco ... ho verificato con la Internet Explorer Developer Toolbar). Il perché non lo fa vedere .... l'ho scoperto abbastanza velocemente.
Mettendo un tbody, è tutto ok.
var a = document.createElement("table");
var b = document.createElement ("tbody");
var c = document.createElement("tr");
var d = document.createElement("td");
d.innerHTML = "asd";
c.appendChild(d);
b.appendChild(c);
a.appendChild (b);
document.body.appendChild(a);E credo che sia una delle tante stupidate di IE. Le specifiche HTML sono molto chiare: The TBODY start tag is always required except when the table contains only one table body and no table head or foot sections. The TBODY end tag may always be safely omitted.
Quindi tbody è opzionale se c'è solo un corpo della tabella (e nessun head/foot).
satoshi2005
16-04-2007, 10:17
Su IE i tag TABLE/TR/TD ci sono, vengono creati (garantisco ... ho verificato con la Internet Explorer Developer Toolbar). Il perché non lo fa vedere .... l'ho scoperto abbastanza velocemente.
Mettendo un tbody, è tutto ok.
var a = document.createElement("table");
var b = document.createElement ("tbody");
var c = document.createElement("tr");
var d = document.createElement("td");
d.innerHTML = "asd";
c.appendChild(d);
b.appendChild(c);
a.appendChild (b);
document.body.appendChild(a);E credo che sia una delle tante stupidate di IE. Le specifiche HTML sono molto chiare: The TBODY start tag is always required except when the table contains only one table body and no table head or foot sections. The TBODY end tag may always be safely omitted.
Quindi tbody è opzionale se c'è solo un corpo della tabella (e nessun head/foot).
Grazie mille! Soprattutto per avermi fatto scoprire la IE Developer Toolbar, non sapevo esistesse!
Nota che se da codice HTML si mette:
<table><tr><td>Prova da html</td></tr></table>
sia IE che FF nel DOM mettono (ed è giusto così) un TBODY ma se la tabella è creata dinamicamente tramite DOM, solo con IE è necessario creare anche un tbody. Mentre con Firefox e Opera il tuo codice iniziale è ok.
Adesso come adesso non saprei dirti se è una pignoleria/baco di IE o una mancanza di Firefox/Opera ma visto che siamo già 2 contro 1, sarei più propenso per la prima opzione .... ;)
EDIT: Ci sono dei metodi aggiuntivi per gli oggetti relativi alle tabelle, che sono anche più comodi e funzionano sia con IE, FF, Opera:
var a = document.createElement("table");
var r = a.insertRow(0);
var c = r.insertCell(0);
c.innerHTML = "asd";
document.body.appendChild(a);
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.