D.R.: Node-Tabelle im IE

Beitrag lesen

Hallo,

Zusätzlich zum dem, was Rouven dir bereits gesagt hat (also dass „tbody“ fehlt):

<html>
<head>
<script language="javascript">

Hier fehlt das vorgeschriebene type-Attribut. „language“ kannst du dagegen weglassen.

function createTable(){
  var col;
  var row;

for(var y = 0; y < 10; y++){

Das ist zwar nicht falsch aber zumindest nicht üblich. Für for-Schleifen verwendet man i.d.R. Buchstaben ab „i“. Das machst ein Script für andere überschaubarer.

col = document.createElement("tr");
   for(var x = 0; x < 10; x++){
    row = document.createElement("td");
    row.style.width = 50;

Da du hier mit Stylesheets arbeitest, MUSST du auch eine Maßeinheit mit angeben.

row.style.height = 50;
    row.style.textAlign = 'center';
    row.innerHTML = x + '/' + y;

Wozu „innerHTML“, wenn du nur blanken Text einfügen willst? Nimm lieber das hier:

row.appendChild(document.createTextNode(x + '/' + y));

document.getElementById('t').appendChild(col);

<input type="button" id="b" onclick="createTable();">
<table border="1" id="t"></table>

Du musst die Tabelle nicht vorher schon im Quelltext haben. Erstelle lieber ein Objekt, das die gesamte Tabelle enthält.

Hier mal meine Version deines Scriptes:

  
function createTable(Button){  
 var Tabelle = document.createElement("table");  
 Tabelle.border = "1";  
 Tabelle.appendChild(document.createElement("tbody"));  
  
 with (Tabelle.firstChild){ //um die Tabelle nicht jedesmal neu referenzieren zu müssen  
  for (var i = 0; i < 10; i++){  
   appendChild(document.createElement("tr")); //Tabellenzeile anhängen  
   for (var j = 0; j < 10; j++){  
    lastChild.appendChild(document.createElement("td")); //Tabellenzelle anhängen  
    with (lastChild.lastChild){ //Alle weiteren Anweisungen auf die Tabellenzelle anwenden  
     appendChild(document.createTextNode(i + "/" + j)); //Text einfügen  
     style.width = "50px";  
     style.height = "50px";  
     style.textAlign = "center";  
    }  
   }  
  }  
 }  
document.body.appendChild(Tabelle); //alternativ könntest du auch insertBefore verwenden  
Button.value = "OK";  
}  

Dein HTML-Body könnte dann so aussehen:

  
<body>  
<input type="button" onclick="createTable(this);">  
</body>  

Ich hoffe, die vielen „http://de.selfhtml.org/javascript/sprache/objekte.htm#with@title=with“-Abkürzungen sind jetzt nicht zu verwirrend.

mfg. Daniel