2011-06-22 42 views
0

所以我試圖動態地在javascript中創建一個表,我已經加載了jQuery庫,所以我選擇使用它的append方法,因爲它易於使用且易於使用找到我的分區。jQuery .append()方法,在IE8中奇怪的行爲

這在Firefox和Chrome,但在IE8失敗(在IE8沒有錯誤,該表只顯示不出來)

$("#weatherFeed").append('<table class=\"weather\"><tr>'); 
for (var i = 0; i < 7; i++) { 
    $("#weatherFeed").append('<td>a</td>'); 
} 
$("#weatherFeed").append('</tr><tr>'); 
for (var i = 0; i < 7; i++) { 
    $("#weatherFeed").append('<td>b</td>'); 
} 
$("#weatherFeed").append('</tr></table>'); 

然而,這個工作正常在所有三個:

$("#weatherFeed").append('<table class=\"weather\"><tr><td>wth</td><td>wth</td>' 
+ '<td>wth</td><td>wth</td></tr><tr><td>wth</td><td>test</td><td>test</td>' 
+ '<td>test</td></tr><tr><td colspan=\"4\">MOOSE BALLS</td></table>'); 

這是我們的企業內部網,我們的用戶中99%都在IE8上..我是新來的JavaScript和jQuery,但我很積極,我可以找到另一種方式來實現這一目標,我只是想它應該工作,所以也許我在做它錯了。

+0

jQuery自動完成結束標記 – Neal

+0

因此,在我有機會添加任何數據之前它正在關閉我的表和行? – Tony

+0

看到我的回答低於 – Neal

回答

0

jQuery自動完成結束標籤,所以你不需要自己動手。
你也應該附加到表格,而不是div。

試試這個:

var table = $('<table class=\"weather\">'); 
$("#weatherFeed").append(table); 

var tr = $('<tr>'); 
table.append(tr); 
for (var i = 0; i < 7; i++) { 
    tr.append('<td>a</td>'); 
} 

tr = $('<tr>'); 
table.append(tr); 
for (var i = 0; i < 7; i++) { 
    tr.append('<td>b</td>'); 
} 

見琴:http://jsfiddle.net/maniator/cUkFa/

+0

那麼是不是很整潔?非常感謝尼爾!我的不好^ _^ – Tony

+0

@Tony - 沒問題0_o – Neal

0

我會建議你通過調試代碼步驟。您可以通過點擊F12並轉到腳本選項卡來在IE中啓動它。一旦你在那裏,你可以設置$(「#weatherFeed」).html()的手錶。在IE7模式,我第一個TD的追加後停下來,我發現手錶顯示以下內容:

"<TABLE class=weather>\r\n<TBODY>\r\n<TR>\r\n<DIV></DIV></TR></TBODY></TABLE>\r\n<TD>a</TD>" 

這對我說的標籤被關閉,爲您和任何後續追加初始後TABLE和TR出現在您嘗試創建的表格之外。