0

こんにちは、IE8の問題があります。コードは次のとおりです。

HTML コード:

  <table id=\"myTable\" border="1">

JavaScript 関数:

function loadTableContent() {

$.ajax({
    type : 'GET',
    url : '/sohara/viewResults.do',
    contentType : 'application/json; charset=utf-8',
    success : function(response) {
        result = response;

        var html_Table = '';
        html_Table += '<tr><th bgcolor="silver">Type</th>
                    <th bgcolor="silver">Quantity A</th>
                    <th bgcolor="silver">Quantity B</th></tr>';
        for ( var i = 0; i < result.length; i++) {
            html_Table += '<tr>';
            html_Table += '<td>'+result[i].description+'</td>';
            html_Table += '<td>'+result[i].quantityA+'</td>';
            html_Table += '<td>'+result[i].quantityB+'</td>';
            html_Table += '</tr>';          
        }   
        html_Table += '</table>';
        $("#myTable").append(html_Table);
    },
    error : function(response) {
        alert("Error");
    }
});
}

Firefox、Chrome、Opera では常に完璧ですが、IE8 ではテーブルに何も表示されません。どうすればそれを管理できますか?

4

2 に答える 2

2

私は何が起こっているのか100%ではありませんが、いくつかの可能性があります:

  • <table>終了タグがないため、要素は不完全です。私は当初、これはあなたが簡潔で例に含めなかったからだと思っていましたが</table>、JavaScript 内に含まれていることに気付きました。次のように、HTML でタグを正常に終了する必要があります。

    <table id=\"myTable\" border="1"></table>

そして、JavaScriptでそれを操作します(JSから追加している終了タグを削除します)

  • さらに、HTML 仕様では、テーブル ヘッダー行 (TH タグを使用したものなど) を要素でラップする必要があると書かれていると思います<thead>(たとえば<table><thead><tr><th>Header</th></tr></thead></table>、ボディ要素は要素でラップされます) <tbody>。これらがなければ、問題の原因となる可能性があることを指摘します。

  • 最後の潜在的な問題の 1 つは、IE が IE9 までずっと、テーブルに innerHTML を設定できないことです。IE9 createElement および set 操作での innerHTML ドロップ タグの設定を参照してください。詳細については、IE の tbody で innerHTML を使用することはできません。JQuery がテーブル データを更新する方法がわかりません。彼らがこの方法に依存していた場合、SO に関する質問がさらに増えると思いますが、誰にもわかりません。

于 2012-10-31T16:11:05.567 に答える
0

実用的な解決策:

マットによると、最初に私はこのようにテーブルを宣言します:

<table id=\"myTable\" border="1"></table> // FULL working method

実際、IE8は、閉じない場合、この方法でhtmlタグを自動的に閉じます。これにより、新しいhtmlコードを追加する際にいくつかの問題が発生します。

<table id=\"myTable\" border="1"></> // NOT working method 

次に、使用する代わりに:

$("#myTable).append(html_Table);

私が使う:

$("#myTable).html(html_Table);

明らかに、私はajaxから削除する必要があります:

html_Table += '</table>';

フルワーキング:)

于 2012-10-31T16:26:52.443 に答える