我正在使用数据表,其中数据来自api服务。
我在操作列中添加了对eash行的复选框。
当我点击复选框时,选中该特定记录的值,使用' onchange'事件
与取消选中功能相同。
示例脚本
//checkbox added to each row holding unique id(ignored mentioning variables)
var passingId,orgName;
var dataList=[];
<td><input type="checkbox" id=passingId onchange="checkThis(passingId + ',' + orgName )"/></td>
function checkThis(ids, oName) {
var el = document.getElementById(ids);
if (el.checked) {
$.post("demo_test_post.asp",
{
OId: ids,
ONAme: oName
});
var listItemAdd = oName;
dataList.push(listItemAdd);
alert(dataList);
}
else if (!el.checked) {
$.post("demo_test_post.asp",
{
OId: ids,
ONAme: oName
});
var listItemRemove = oName;
dataList.pop(listItemRemove);
alert(dataList);
}
}
此方法在检查任何记录时将数据推送到数组。
取消选中时,必须从数组中删除该行的记录(仅在此情况下为oName)。
添加部件没有问题,删除部件正在工作但没有删除 选择的值但删除最后存储的值。我肯定不见了 一些东西,因为我不熟悉javascript无法理解这些例子。
如果有人可以提供帮助,请提供帮助。谢谢你的时间。
答案 0 :(得分:2)
pop
是 Stack 操作,可删除数组的最后一个元素。相反,您应该使用类似搜索给定元素的内容并将其删除,如下所示
var listItemRemove = oName;
var index = dataList.indexOf(listItemRemove);
if(index >= 0) dataList.splice(index, 1);
答案 1 :(得分:1)
你应该做的是将pop
替换为拼接,为了做到这一点,你需要在数组中找到被删除的元素索引。
function checkThis(ids, oName) {
var el = document.getElementById(ids);
if (el.checked) {
$.post("demo_test_post.asp",
{
OId: ids,
ONAme: oName
});
var listItemAdd = oName;
dataList.push(listItemAdd);
alert(dataList);
}
else if (!el.checked) {
$.post("demo_test_post.asp",
{
OId: ids,
ONAme: oName
});
var removeItemIndex = dataList.indexOf(oName);
if (removeItemIndex != -1) dataList.splice(removeItemIndex, 1); //remove at this index - remove 1
alert(dataList);
}
}
您可以阅读有关拼接here
的更多信息答案 2 :(得分:1)
Array.pop()始终删除数组中的最后一个元素。要删除特定元素,您必须搜索并删除它。这可以使用Array.indexOf来查找元素的索引,使用Array.splice来删除它。
var index = dataList.indexOf(listItemRemove);
if (index !== -1){
dataList.splice(index, 1);
}
或者,您可以使用Array.filter函数删除与搜索项匹配的所有元素。
dataList = dataList.filter(function(element){
return element !== listItemRemove;
});