1

我正在尝试将我正在动态创建的表格制作JavaScript.dataTable. 我已经将我的代码与我的同事进行了比较,它几乎是相同的。我已经进行了必要的更改,但我不断收到JavaScript错误消息:控制台中的“无法读取 null 的属性 'parentNode'”。

所有代码都完美执行。新表正在浏览器中显示,但是一旦它尝试运行该行$('#data').dataTable({"paging": false});,它就会给我错误。

谁能看到是什么原因造成的?可能是范围错误,或者错误位置的括号/括号。

function Load(p1, p2) {

var work= "";

$('#div1').empty();

var tablearea = document.getElementById('div1'),
table = document.createElement('table');
table.id = "data";
table.style.fontSize = "small";
table.width = "100%";

var tbody = document.createElement('tbody');
tbody.id = "dataTB";
table.appendChild(tbody);
tablearea.appendChild(table);

var url = sessionStorage.baseUrl + "XXXXXXXXX";

$.getJSON(url)
    .done(function (data) {

        var results = $.parseJSON(data);

        if (results != null)
        {
            for (i = 0; i < results.length; i++) {
                    work += "<tr><td>" + results.data[i].info + "</td></tr>";
                }
        }

        $('#dataTB').html(work);

        $('#data').dataTable({"paging": false});
    })
    .fail(function (jqXHR, textStatus, err) {
        alert('Error: ' + err);
});
}
4

4 回答 4

4

我认为您必须thead在表中包含一个有效元素

于 2015-05-15T17:43:13.727 回答
2

我在使用DataTables.js目录时遇到了这个问题,我通过在任何刷新或重新填充之前清空表来解决它:

$('#data').empty();
于 2016-11-30T07:25:55.623 回答
1

在将数据行添加到表之前,我不会将表附加到 DOM。所以我会尝试以下类似的方法(在 JSON 回调中):

var tbody = document.createElement('tbody');
    tbody.id = "dataTB";
    table.appendChild(tbody);

var tablearea = document.getElementById('div1'),
    table = document.createElement('table');
    table.id = "data";
    table.style.fontSize = "small";
    table.width = "100%";

for (i = 0; i < results.length; i++) {
  $(tbody).append("<tr><td>" + results.data[i].info + "</td></tr>");
}

tablearea.appendChild(table);

这是一个工作的 jsbin:http: //jsbin.com/vacabe/1/

于 2015-05-15T17:44:15.483 回答
0

我对这个图书馆也有同样的情况。我将它与 Knockout.JS 一起使用并使其正常工作,我在 viewModel 的末尾添加了一个超时:

setTimeout(() => {

    // Call the get function at load
    GetFiltersData();

}, 0);

这不会影响你的页面,我用几个浏览器成功地测试了这个。

于 2017-05-16T16:35:22.953 回答