2010-06-18 71 views
0

只存在於IE瀏覽器的這個問題,在Mozilla其工作正常...我必須刪除點擊複選框一排.... 這裏是我的代碼:「檢查」爲空或不是一個對象 - 只有IE

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

顯示網頁錯誤:'檢查' 爲空或不是對象
有人可以告訴我這個問題。

在此先感謝, SRI ..

+0

有什麼'tableID'參數? – SLaks 2010-06-18 13:20:19

+0

是的,不使用任何where tableId。需要刪除。謝謝 – Srinath 2010-06-18 13:22:52

+0

'getElementsByClassname'沒有在IE中實現。 http://www.quirksmode.org/blog/archives/2008/05/getelementsbycl.html – 2010-06-18 13:36:12

回答

3

您可以替換使用jQuery的循環,就像這樣:

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

這將選擇所有tr.row元素:has一個.delete元素是:checked
它調用.remove()刪除的行,然後調用.map()讓行的ID,並應用push功能將它們添加到您的陣列。

您可以將其更改爲

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

編輯避免push.apply:試試這個:

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

+1第二次你今天打敗了我。請確實添加一些更具說明性的文字。 – MvanGeest 2010-06-18 13:20:50

+0

+1,也打我。 – 2010-06-18 13:23:31

+0

我的不好,我編輯了我的帖子,請通過...這就是我使用的。謝謝 – Srinath 2010-06-18 13:35:53

0

無論你的複選框和你的按鈕被稱爲「刪除」和你delItems變量也包含按鈕。該按鈕沒有檢查屬性,我猜是IE抱怨它。

儘管在例子中給出的類'row'的元素少於名稱'delete'的元素,這意味着你不會到達delItems [i]所指向的循環中的點按鈕。除非頁面上有更多的元素類'row'。

+0

我的不好,我編輯了我的帖子,請通過...這就是我使用的。謝謝 – Srinath 2010-06-18 13:36:24