function deleteShop(){
//先判断是否选择了删除的商品
var sel=document.getElementsByName('sel');
var j=0;
for(var i=0;i<sel.length;i++){
if(sel[i].checked==true){
j=j+1;
}if(j==0){
confirm('请选择商品');
return;
}
var result=confirm('确定删除吗');
if(result){
//删除操作
for(var i=0;i<sel.length;i++){
if(sel[i].checked==true){
j=j+1;
//获取id
if(i==0){
var id=sel[i].id;
}else if(i==sel.length){
}else{
var id=sel[i-1].id;
}
//获取索引
var index=id.substr(id.length-1,3);
document.getElementById('myTable').deleteRow(parseInt(index)+1);
}
}
}else{
}
}
}
题主逻辑有些混乱,改了代码,具体看代码注释。有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~
function deleteShop() {
//先判断是否选择了删除的商品
var sel = document.getElementsByName('sel');
var j = 0;
for (var i = 0; i < sel.length; i++) {
if (sel[i].checked == true) {
j = j + 1;
}
}
//判断要放外面
if (j == 0) {
alert('请选择商品');
return;
}
/////////这里应该断开,判断归判断,删除归删除
var result = confirm('确定删除吗');
if (result) {
//删除操作
for (var i = sel.length - 1; i >= 0; i--) {//而且需要从后面开始遍历,从头开始遍历,删除后会导致sel集合-1,会删除不完,只能删1半的记录
if (sel[i].checked == true) {
//没看懂下面的逻辑,可以不需要
/*j = j + 1;
//获取id
if (i == 0) {
var id = sel[i].id;
} else if (i == sel.length) {
} else {
var id = sel[i - 1].id;
}*/
//获取索引
//var index = id.substr(id.length - 1, 3);
//document.getElementById('myTable').deleteRow(parseInt(index) + 1);
//不能用id后的数字来删除,有bug,第一次删除后索引就全变了,如删除了sel0,那么原来的sel1行索引就变0了,在通过id后数字来获取,那么就会删除到下一行了
//应该通过dom关系来删除
var tr = sel[i].parentNode.parentNode;//获取CheckBox所在的tr
tr.parentNode.removeChild(tr)//////////删除tr
}
}
}
}