此问题仅存在于 IE 浏览器中,在 mozilla 中工作正常...我必须在单击复选框时删除一行... 这是我的代码:
<table width="100%" id="seller">
<tr id="row_1" class="row">
<td><input type="checkbox" name="delete_seller" id="delete_seller" value="1" /></td>
</tr>
<tr id="row_2" class="row">
<td><input type="checkbox" name="delete_seller" id="delete_seller" value="2" /></td>
</tr>
</table>
<input type="button" id="delete" name="delete" value="Delete" onclick="delete_row('seller')"/>
<小时/>
var delete_ids = [];
function delete_row(tableID){
var rows = document.getElementsByClassName('row');
var delItems = document.getElementsByName('delete_seller');
for(var i=0;i < rows.length;i++){
if(delItems[i].checked == true){
delete_ids.push(rows[i].id);
jQuery(rows[i]).remove();
i = i-1;
}
}
}
页面上显示错误:“checked”为空或不是对象。
请告诉我修复方法。
提前致谢, 斯里兰卡..
最佳答案
您可以用 jQuery 替换循环,如下所示:
delete_ids.push.apply(delete_ids,
$('tr.row:has(.delete:checked)').remove()
.map(funcion() { return this.id; })
);
这将选择 :has
具有 :checked
的 .delete
元素的所有 tr.row
元素.
它调用 .remove()
删除行,然后调用 .map()
获取行的 ID,并应用 push
函数将它们添加到您的数组中。
您可以通过将其更改为来避免push.apply
$('tr.row:has(.delete:checked)').remove()
.each(funcion() { delete_ids.push(this.id); });
编辑:试试这个:
$('tr.row:has(.delete_seller:checked)')
.each(funcion() { delete_ids.push(this.id); })
.remove();
关于javascript - “checked”为 null 或不是对象 - 仅限 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3069870/