gpt4 book ai didi

javascript - DataTables循环遍历表并删除特定列中包含特定字符串的所有行

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:30:40 25 4
gpt4 key购买 nike

一段时间以来一直在努力解决这个问题:

在我的数据表中索引 6 下的列中,我有一个关于克罗地亚语的 bool 值 -> DA 代表 1,NE 代表 0。有一次我想启动一个程序来删除所有包含“DA”的行但是,在执行以下过程之后,索引 6 下的列:

function deleteSelectedDiscountedProducts() {
tableSelectedProducts.rows().every( function ( rowIdx, tableLoop, rowLoop ) {
var currentData = this.data();
if (currentData[6].indexOf("DA") >= 0) {
tableSelectedProducts.row(rowIdx).remove().draw(false);
} else {

}
} );
}

我只删除了一行(可能是检测到的第一行)和控制台中的以下内容:

Uncaught TypeError: Cannot read property '6' of undefined

此外,我尝试切换 tableSelectedProducts.row(rowIdx).remove().draw(false);用 this.remove().draw(false);并且它只删除它检测到的第一行,它确实犯了完全相同的错误。

后台发生了什么,如何解决?在我看来,删除一行后,数据表中的所有数据都不再存在(索引 6 下的列未定义),当我尝试对检测到的每一行进行 console.log(this) 时,我不在删除第一个检测到的行后获得任何输出,但上面出现错误。

最佳答案

在循环中按索引删除数组项是不好的做法。一旦删除了一项,所有索引可能都已更改。最好选择要删除的行 dom nodes 的列表,然后删除它们。这是一个例子:

$('#delete').on('click', function() {
var nodes = [];
table.rows().every(function(rowIdx, tableLoop, rowLoop) {
if (this.data()[3] == 'Edinburgh') nodes.push(this.node())
})
nodes.forEach(function(node) {
table.row(node).remove().draw()
})
})

演示 -> http://jsfiddle.net/LqzLzxon/

关于javascript - DataTables循环遍历表并删除特定列中包含特定字符串的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45803054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com