使用jQuery追加到表时NOT_FOUND_ERR

时间:2011-07-31 14:12:07

标签: javascript jquery dom append html-table

我确实发现了与jQuery结合的NOT_FOUND_ERR: DOM Exception 8错误的几个问题,但它们并没有发生在像我这样的场景中,因此它们没有提供解决方案。

基本上,我有一个对象,我正在迭代它,然后使用<table> http://jsfiddle.net/nt9gZ/id="legend"添加行。

var items  = [],
    obj    = {a: 1,
              b: 2};

$.each(obj, function(i, v) {
    items.push(
        $("<tr>").append(
            $("<td>").html(i),
            $("<td>").html(v)
        )
    );
});

// .empty() is to erase contents when running this piece of code again
$("#legend").empty().append(
                        $(items)
                     );

当我运行这段代码时,我收到错误:

Uncaught Error: NOT_FOUND_ERR: DOM Exception 8

在Chrome上。

我不确定我的代码究竟出了什么问题。

  • 什么找不到?
  • 我该如何解决这个问题?

5 个答案:

答案 0 :(得分:4)

您正在尝试插入数组数组..

在推送数组中创建的对象时添加.get(0),以便插入实际的DOM片段..

$.each(obj, function(i, v) {
    items.push(
        $("<tr>").append(
            $("<td>").html(i),
            $("<td>").html(v)
        ).get(0)
    );
});

演示http://jsfiddle.net/gaby/nt9gZ/7/

答案 1 :(得分:1)

我不熟悉您的以下代码

$("<tr>").append(
            $("<td>").html(i),
            $("<td>").html(v)
        )

但这是达到同样目的的另一种方式。

var items  = [],
obj = {a: 1, b: 2};

$.each(obj, function(i, v) {
    items.push("<tr>"+"<td>"+i+"</td><td>" + v +"</td></tr>");
});

$("#legend").append(items.join(""));

答案 2 :(得分:1)

来自jsfiddle

追加不要在第一个参数中使用数组。 但是,阅读doc,第二个arg可以是一个数组。我无法设法传递数组并使其工作(作为第二个参数)。

答案 3 :(得分:1)

试试这个jsfiddle

你应该遍历items数组中的项目并逐个追加它们

答案 4 :(得分:1)

我稍微更新了您的代码:http://jsfiddle.net/nt9gZ/8/

基本上数组有问题 - append方法不会将jQuery对象数组作为参数,只是一系列元素。所以我使用add方法一起收集所有行。