2011-06-22 6 views
0

JavaScriptを使用してテーブルを動的に作成しようとしていますが、jQueryライブラリが既にロードされていますので、使いやすく簡単です私のdivを見つける。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>'); 

しかし、これはすべての3つの中で正常に動作します:

$("#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には追加しないでください。

代わりにこれを試してみてください:http://jsfiddle.net/maniator/cUkFa/

+0

まあまあまあですか?ありがとうNeal !!私の悪い^ _^ – Tony

+0

@トニー - 問題ありません0_o – Neal

0

私はあなたがデバッガでコードをステップ実行することを示唆している:

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>'); 
} 

はフィドルを参照してください。これをIEで呼び出すには、F12を押して[スクリプト]タブに移動します。そこにいたら、$( "#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は、作成しようとしていたテーブルの外に表示されます。