0

我有一个<table>with<thead><tbody>。现在,$(document).ready()我有一个针对它的函数<tbody>并对 servlet 进行 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。

请问有没有办法解决这个问题?

谢谢

编辑:意识到是我 appendTo() 到 td 中的输入框导致了问题,这个代码片段很好。所以问题结束了。道歉。

4

2 回答 2

1

仅供参考: IE8、IE7 和 IE6 不允许对该元素进行任何修改,包括 .append()并且.appendTo() 因为它们不被视为标准或正确的 DOM 元素,因此被视为text。确保关闭元素,例如<div></div><a></a>等,以便较旧的浏览器可以知道您正在尝试做什么。

检查这个小提琴

描述:

.appendTo() 如果您传递使用新窗口创建的 DOM 元素,则效果很好。但如果从原始窗口创建(html 字符串或之前使用 $() 创建)则失败。

于 2013-07-18T15:27:06.737 回答
0

尝试仅在重新定义此部分后才访问 DOM:

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 回答