2011-07-12 41 views
1

嗨,我目前正在练习HTML DOM,我写了这个函数来创建一个动态表。在Internet Explorer中的HTML DOM动态表

function initScheduleTable() { 
    var days = new Array("MON", "TUE", "WED", "THU", "FRI", "SAT", "SUN"); 
    var table = document.getElementById("schedule"); 
    var hourPerDay = 24; 
    var row, cell; 
    var i, j; 

    // Time headers 
    row = table.insertRow(-1); 
    cell = row.insertCell(-1); 

    for(i = 0; i < hourPerDay; ++i) { 
     cell = row.insertCell(-1); 
     if(i < 10) 
      cell.innerHTML = "0" + i; 
     else 
      cell.innerHTML = i; 
    } 

    for(i = 0; i < days.length; ++i) { 
     row = table.insertRow(-1); 
     cell = document.createElement("th"); 
     cell.innerHTML = days[i]; 
     row.appendChild(cell); 

     for(j = 0; j < hourPerDay; ++j) { 
      cell = row.insertCell(-1); 
      cell.innerHTML = "&nbsp;"; 
     } 
    } 
} 

这适用于Chrome和Firefox,但不适用于IE9。 IE浏览器的日子显示在最右边的列。我使用IE开发人员的工具检查了源,并且它显示<th>列在<td>列表的末尾。

在这种情况下IE有什么需要注意的吗?

回答

1

由于一些荒谬的原因,IE认为TH单元必须在行尾。将每行的TH改为TD,并使用CSS将其文本加粗,使其看起来像TH。

+1

除了将文本设置为粗体外,TH还以文本为中心。 – mrk

+0

我明白了。我可以知道让IE如此想的原因是什么? – PSWai

+0

我不知道。我从来没有见过这个,虽然它在IE 6中,所以我想它已经存在了至少10年左右。发现这种晦涩的错误是参与此类讨论的一部分。 :-) – RobG