Javascript 如何在数据表更新期间替换/删除行?

Javascript 如何在数据表更新期间替换/删除行?,javascript,jquery,datatables,datatables-1.10,Javascript,Jquery,Datatables,Datatables 1.10,所以,我正在编写使用。但它似乎使用的是它的旧版本。所以,我的表每5秒更新一次,我所需要的就是当新数据进来时它完全更新。然而,当它输入新的更新时,表中不再引用的数据会留在那里,即使它会消失,我的表也会随着时间的推移变得越来越大。我尝试使用: Table.fnClearTable(); // throws error below TypeError: Cannot set property '_aData' of undefined Table.fnDestroy(); // doesn't se

所以,我正在编写使用。但它似乎使用的是它的旧版本。所以,我的表每5秒更新一次,我所需要的就是当新数据进来时它完全更新。然而,当它输入新的更新时,表中不再引用的数据会留在那里,即使它会消失,我的表也会随着时间的推移变得越来越大。我尝试使用:

Table.fnClearTable(); // throws error below
TypeError: Cannot set property '_aData' of undefined
Table.fnDestroy(); // doesn't seem to work either
"bDestroy":true // didn't seem to work, but I couldn't tell
这不管用。它删除了所有内容,但不允许我重建新表。我还尝试使用:

Table.fnClearTable(); // throws error below
TypeError: Cannot set property '_aData' of undefined
Table.fnDestroy(); // doesn't seem to work either
"bDestroy":true // didn't seem to work, but I couldn't tell
这就是我正在研究的特殊函数。我希望定期删除并重新创建表,或者更好地刷新进入其中的数据

my.updating.graph = function(obj, listAll) {
    try {
    if (obj == null || obj.updates == null || obj.updates.length == 0) {
        $("#sectionUpdates").hide();
        return;
    }
    $("#sectionUpdates").show();
    var table = null;
    if ($.fn.dataTable.isDataTable("updateTable")) { // may remove this statement...
        table = $("#updateTable").dataTable();
    } else {
        table = $("#updateTable").dataTable({ // is there a reset option?
            "paging": !listAll,
            "pagingType": !listAll ? "X" : "Y",
            "searching": true,
            "order": [
                [0, "desc"]
            ],
            "ordering": true,
            "oLanguage": {
                "sEmptyTable": "No updates at this time"
            },
            "iDisplayLength": 15,
            "info": false,
            "formatNumber": function(format) {
                return friendlyFormat(format, 1000, 0);
            },
            "aoColumns": [{
                    "bVisible": false
                },
                {
                    "className": "dt-center",
                    "width": "10%",
                    "iDataSort": 0,
                    "render": function(data, type, row) {
                        return extractData(data, type, row[0]);
                    }
                }, {
                    "sType": "mixed-string",
                    "className": "dt-left",
                    "width": "30%",
                    "render": function(data, type, row) {
                        return getZData(data, type, row[1]);
                    }
                }, {
                    "className": "dt-left",
                    "width": "30%",
                    "render": function(data, type, row) {
                        return getYData(data, type, row[2]);
                    }
                }, {
                    "sType": "mixed-string",
                    "className": "dt-left",
                    "width": "30%",
                    "render": function(data, type, row) {
                        return getZData(data, type, row[3]);
                    }
                }
            ]
        });
        $("#updateTable").resize(function() {});
    }
    var updates = obj.updates;
    for (var i = 0; i < updates.length; i++) {
        var update = updates[i];
        var id = makeId(update.id);
        var triggered = getCurrentUTC();
        if (update) {
            if (getID("updateTable", id) == null) {
                var row = table.fnAddData([
                    update.field1,
                    update.field2,
                    update.field3,
                    update.field4
                ]);
                var node = $("#updateTable").dataTable().fnSettings().aoData[row[0]].nTr;
                node.setAttribute("id", "updateTable-item-" + id);
                node.setAttribute("rowIdx", row[0]);
                setID("updateTable", id, row[0]);
            }
            table.fnUpdate([
                    update.field1,
                    update.field2,
                    update.field3,
                    update.field4
                ], getID("updateTable", id),
                null, false, false);
            for (var q = 0; q < tblStatusClasses.length; q++) {
                $("updateTable-item-" + id + " td:eq(0)").removeClass(tblStatusClasses[q]);
            }
            $("#updateTable-item-" + id + " td:eq(0)").addClass("table-state" + update.field1);
        }
        table.fnStandingRedraw();
    }
} catch (e) {
    console.log(e);
}
}
my.updateing.graph=函数(obj,listAll){
试一试{
if(obj==null | | obj.updates==null | | obj.updates.length==0){
$(“#节更新”).hide();
返回;
}
$(“#节更新”).show();
var表=null;
如果($.fn.dataTable.isDataTable(“updateTable”){//可以删除此语句。。。
table=$(“#updateTable”).dataTable();
}否则{
table=$(“#updateTable”).dataTable({//是否有重置选项?
“分页”:!listAll,
“pagingType::!listAll?”X:“Y”,
“搜索”:没错,
“命令”:[
[0,“描述”]
],
“排序”:正确,
“语言”:{
“sEmptyTable”:“目前没有更新”
},
“iDisplayLength”:15,
“信息”:错误,
“formatNumber”:函数(格式){
返回friendlyFormat(格式,1000,0);
},
“aoColumns”:[{
“可见”:假
},
{
“类名称”:“dt中心”,
“宽度”:“10%”,
“iDataSort”:0,
“渲染”:函数(数据、类型、行){
返回extractData(数据、类型、行[0]);
}
}, {
“sType”:“混合字符串”,
“className”:“dt left”,
“宽度”:“30%”,
“渲染”:函数(数据、类型、行){
返回getZData(数据、类型、行[1]);
}
}, {
“className”:“dt left”,
“宽度”:“30%”,
“渲染”:函数(数据、类型、行){
返回getYData(数据、类型、行[2]);
}
}, {
“sType”:“混合字符串”,
“className”:“dt left”,
“宽度”:“30%”,
“渲染”:函数(数据、类型、行){
返回getZData(数据、类型、行[3]);
}
}
]
});
$(“#updateTable”).resize(函数(){});
}
var updates=obj.updates;
对于(var i=0;i
为什么不升级到1.10?然后就很容易了,比如$(“#updateTable”).DataTable().clear()升级一个使用1.9版本、超过10000行(可能100000行)长的预先存在的项目会有多困难?有多少代码是datatables独有的?Alien说,他试图保持它向后兼容。我会试着改变包含的内容,看看是否有副作用。