0

と が<table>あり<thead>ます<tbody>。これを$(document).ready()対象とする関数が<tbody>あり、サーブレットへの ajax 呼び出しを行います。結果Jsonは、行ごとおよびセルごとに tbody に挿入されます。

以下はコードの一部です。

    var tbody = $('#topten');
    $.each(responseJson, function(i, obj) {

        var trkey = $('<tr>');
        trkey.appendTo(tbody);

        $.each(obj, function(K, V) {
            if (K == 'abc') {
                var td = $('<td>');
                td.appendTo(trkey);
            }

       });

    });

IE8 コンソールから次の例外が発生しました。

SCRIPT65535: Unexpected call to method or property access. 
jquery-1.8.0.js, line 5565 character 5

たまたま

this.appendChild( elem );

私のアプリは IE9、10 FF、Chrome で完全に動作しますが、IE8 では動作しません。

この問題の回避策があるかどうか尋ねてもよろしいですか?

ありがとう

編集: 問題を引き起こしたのは、td に appendTo() した入力ボックスであることに気付きました。このコード フラグメントは問題ありません。ということで質問は締め切らせていただきます。謝罪。

4

2 に答える 2

1

参考までに: IE8、IE7、および IE6 では、標準または正しい DOM 要素とは見なされず、 textとして扱われるため、 and.append()を含むその要素への変更は許可されませんなどの要素を閉じて、古いブラウザが何をしようとしているのかを認識できるようにしてください。.appendTo() <div></div><a></a>

このフィドルをチェック

説明:

.appendTo() 新しいウィンドウで作成された DOM 要素を渡すと、うまく機能します。ただし、元のウィンドウ (html 文字列または直前に $() で作成) から作成された場合は失敗します。

于 2013-07-18T15:27:06.737 に答える
0

このセクションを再定義して、DOM を 1 回だけヒットするようにしてください。

var trkey = '<tr>';
$.each(obj, function (K, V) {
    if (K == 'abc') {
        trkey = trkey + '<td></td>';
    }
});
trkey = trkey + '</tr>';
$(trkey).appendTo(tbody);
于 2013-07-18T15:59:36.587 に答える