无法读取属性' createDocumentFragment'表格重新格式化

时间:2017-09-16 12:10:19

标签: javascript jquery html

我正在尝试通过在我的应用程序中对现有表进行一些更改来重新格式化表。我在互联网上搜索了以下错误,但我还没有找到任何解决办法。

我得到的错误如下:

  

无法读取属性' createDocumentFragment'未定义的

这是我的

function editTable()
{

// debugger;
// remove blank td pair
$('#prodHold tr td').each(function() {
    // debugger;
    if ($(this).text() == ''){
       $(this).prev('td').remove();
       $(this).remove();
    }
});


// get array of all tds
var tds = $('#prodHold tr td').length;
var td_arr = [];
for(var i=0; i<tds; i++){
     // if($(this).text()!== ''){
         // td_arr.push($('#prodHold tr td').eq(i).html());
     // }
     if($(this).html()!== ''){
         td_arr.push($('#prodHold tr td').eq(i).html());
     }

}

// prepare table, wrap tr for every 4 tds, *according to your table sample
var e = '<tr>';
for(var i=1; i<=td_arr.length; i++){
    if(i%4 == 0){
        e = e + '<td>' + td_arr[i-1] + '</td></tr><tr>';
    }
    else{
        e = e + '<td>' + td_arr[i-1] + '</td>';
    } 
}
// append
$('#prodHold').html(e);
}



$(document).ready(function () {
    editTable();

});

在下线获取错误

 td_arr.push($('#prodHold tr td').eq(i).html());

我使用的代码来自下面的问题

Remove content from table and reformat the table

请指导我如果我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

错误似乎是在$(this).html()上触发的,因为this没有引用DOM元素。您在正常this循环中使用for,而您可能希望将其用于jQuery each循环回调。

像这样:

// get array of all tds
var tds = $('#prodHold tr td'); // not length
var td_arr = [];
tds.each(function() {
    if($(this).html()!== ''){
        td_arr.push($(this).html());
    }
})

注意:你应该重新考虑你收到的错误代码是否值得接受。