开发者

'checked' is null or not an object - only IE

开发者 https://www.devze.com 2023-01-04 11:09 出处:网络
This problem exists only in IE browser, in mozilla its working fine... i have to delete a row on click on checkbox....

This problem exists only in IE browser, in mozilla its working fine... i have to delete a row on click on checkbox.... Here is my code :

<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;
        }
      }
}

Showing error on page : 'checked' is null or not an object.

can one please tell me the fix .

thanks in advance, sri..


You can replace the loop with jQuery, like this:

delete_ids.push.apply(delete_ids,
    $('tr.row:has(.delete:checked)').remove()
        .map(funcion() { return this.id; })
);

This will select all tr.row element that :has a .delete element that is :checked.
It calls .remove() to remove the rows, then calls .map() to get the rows' IDs, and applies the push function to add them to your array.

You can avoid the push.apply by changing it to

    $('tr.row:has(.delete:checked)').remove()
        .each(funcion() { delete_ids.push(this.id); });

EDIT: Try this:

    $('tr.row:has(.delete_seller:checked)')
        .each(funcion() { delete_ids.push(this.id); })
        .remove();


Both your checkboxes and your button are called "delete" and your delItems variable will contain the button as well. The button doesn't have a checked attribute, which I'm guessing is where IE complains about it.

Although in the example you give there are fewer elements with class 'row' than there are elements with name 'delete' which should mean you don't get to the point in the loop where delItems[i] refers to the button. Unless there are more elements class 'row' on the page.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号