2012-03-04 57 views
2

我已經嘗試了不同的解決方案,但我無法刪除正確的行。
注意:在HTML5中,使用ID中的數字是有效的。如何刪除特定ID的表格行?

HTML

<table> 
    <tr id="2"></tr> 
    <tr id="5"></tr> 
    <tr id="7"></tr> 
    <tr id="9"></tr> 
</table> 

JS

var arr = new Array(); 
arr[0] = '7'; 
arr[1] = '9'; 

for(var row_id in arr) { 
    $('table tr[id='+row_id+']').remove(); 
} 

結果總是一樣的 - 我的一些前幾列被刪除,而不是底部的兩個。
我在這段代碼中遺漏了什麼?

更新:這裏是我的小提琴 - http://jsfiddle.net/6PkMK/1/

回答

4

你有兩個問題。首先,您使用key而不是array[key]。讓我做一個快速演示...

var array = ["a", "b", "c"]; 

for (var i in array) 
{ 
    console.log(i); //0, 1, 2 
    console.log(array[i]); //"a", "b", "c" 
} 

你得到的圖片,對嗎?第二個問題是,我認爲,以錯誤的方式使用選擇器變量。在JQuery中,當你想選擇一個帶有id的元素時,你可以這樣做:$(#id),而不是你這樣做的方式。

試試這個:

var arr = new Array(); 
arr[0] = '7'; 
arr[1] = '9'; 

for(var row_id = 0; row_id < arr.length; row_id ++) { //The proper way to iterate 
    $('#' + arr[row_id]).remove(); 
} 

同樣地,如果這是假的,請讓我知道在評論,我會刪除我的答案。

+0

我相信我的答案是迄今爲止唯一正確的答案。 – corazza 2012-03-04 23:06:22

+1

由於@am不是我說的,數字ID是錯誤的,但是如果你說'$(「#row」+ arr [row_id])...'這應該工作。 +1,因爲它應該比原始答案中的選擇器更快。 – ClarkeyBoy 2012-03-04 23:06:43

+0

@Bane爲什麼你的只有一個正確的時候我的ID只selectpr在張貼之前 – charlietfl 2012-03-04 23:20:47

-1

你試過:

$('table tr#'+arr[row_id]).remove(); 
+1

這有什麼錯'$( '#' + ROW_ID)一個.remove();'? ;-) – Tomm 2012-03-04 23:02:21

+0

這不會比使用* attribute-equals *選擇器有任何改進。 – 2012-03-04 23:04:39

+2

它不起作用。它是'array [key]',而不是'key'。 – corazza 2012-03-04 23:04:47

3

我得到它的工作 - http://jsfiddle.net/fbjut/

請注意,你真的不應該使用數字ID,你應該開始他們'行'或什麼(最好是更具描述性的東西!)。

var arr = new Array(); 
arr[0] = '7'; 
arr[1] = '9'; 

for(var row_id in arr) { 
    $('table tr[id='+arr[row_id]+']').remove(); 
} 
​ 
+0

你應該在這裏發佈答案,而不只是在不同的網站。 – 2012-03-04 23:30:31

+0

對不起 - 我正在考慮採取asker代碼,修改它以便它可以工作,鏈接到它並提供建議,同時算作答案(諷刺的結尾 - 這不像我想的那樣,更重要的是**知道**是這種情況....)。 – ClarkeyBoy 2012-03-04 23:34:28

+0

不要粗魯。 StackOverflow的問題和答案意味着成爲未來讀者的資源。爲了確保您的答案在將來可用,應在此處張貼,並且非現場鏈接爲補充。 – 2012-03-04 23:40:16

0
var arr = ['7','9']; 

for(i=0;i<arr.length;i++) { 
    $('#'+arr[i]).remove(); 
} 

demo jsBin


/* 
var arr = []; 
arr[0] = '7'; 
arr[1] = '9'; 
*/ 
var arr = ['7','9']; 

for(var row_id in arr) { 
    $('#'+arr[row_id]).remove(); 
} 

demo2 jsBin