2011-07-12 74 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