javascript - “checked”为 null 或不是对象 - 仅限 IE

标签 javascript internet-explorer

此问题仅存在于 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/

相关文章:

css - 背景图像不显示 IE

redirect - 稍后使用 location.hash 时,带有片段标识符的 Response.Redirect 会导致意外刷新

javascript - 关于谷歌地图中 MVCObject 的一些事情

javascript - 如何用新图像替换图像,而不是在 API 提交后添加到页面?

javascript - 如何访问ReactJS中的根元素?

html - 如何在 Body 标签内使用 CSS 强制将 html 内容包装为固定宽度?

php - 一个讨厌的砌体 IE 错误

javascript - 将元素高度设置为clientHeight导致页面滚动

javascript为添加到类的方法设置 "this"

css - 如何在ie8中停止li步进效果?