2013-02-10 96 views
1

我只是想知道,如果它可能在JavaScript中一次獲得多個ID,而不使用JQuery。我正在檢查動態創建的表格中每個單元格的背景顏色。舉例來說,我有這樣的代碼:Javascript一次獲得多個ID

var black = "rgb(0, 0, 0)"; 
if(document.getElementById("cell1").style.backgroundColor == black && 
    document.getElementById("cell2").style.backgroundColor == black) 
{ 
    alert("Two cells are black!"); 
} 

是否可以做這樣的事情:

var black = "rgb(0, 0, 0)"; 
if(document.getElementById("cell1","cell2").style.backgroundColor == black) 
{ 
    alert("Two cells are black!"); 
} 

我儘量不使用jQuery,就好象我不是太熟悉,它。

+1

不存在這樣的特徵。 – SLaks 2013-02-10 17:19:23

+0

不是。由於函數的本質,'getElementById'應該只返回一個元素。不過,您可以輕鬆編寫自己的文件。 – BenM 2013-02-10 17:19:36

+0

也許你可以使用jQuery來做到這一點。 – Jeff 2013-02-10 17:20:37

回答

1

隨着現代瀏覽器,你可以使用querySelectorAllcompatibility matrix)做同樣的事情,但你還是要遍歷所產生的NodeList

var nodes = document.querySelectorAll("#cell1, #cell2"); 
var count = 0; 
for (var index = 0; index < nodes.length; ++index) { 
    if (nodes[index].style.backgroundColor == black) { 
     ++count; 
    } 
} 
if (nodes.length === count) { 
    alert("Both are black"); 
} 

並沒有真正給你買了什麼,說:

var cells = ["cell1", "cell2"]; 
var count = 0; 
for (var index = 0; index < cells.length; ++index) { 
    if (document.getElementById(cells[index]).style.backgroundColor == black) { 
     ++count; 
    } 
} 
if (cells.length === count) { 
    alert("All cells are black"); 
} 

所以簡而言之:沒有,你可以做的沒有任何更有用的東西。

1

不原生地的相當大的比例。但你可以很容易地編寫自己的:

function getElementsById(elements) 
{ 
    var to_return = [ ]; 
    for(var i = 0; i < elements.length; i++) 
    { 
     to_return.push(document.getElementById(elements[i])); 
    } 
    return to_return; 
} 

這將接受一個I​​D數組作爲參數,並返回數組中的元素。您可能還想查看document.querySelector方法。

+0

+1儘管還有其他方法,如querySelectorAll,堅持getElementById提供了最佳性能。 – Christophe 2013-02-10 17:36:11

0

我有upvoted @ benm的答案,但我想建議另一種選擇。

您的問題:

我檢查每個單元

的背景色在這種情況下,它會更有意義的ID附加到表本身。你選擇成爲(假設沒有嵌套表):

var cells = document.getElementById("myTable").getElementsByTagName("td"); 

或者最新的瀏覽器:

var cells = querySelectorAll("#myTable>tbody>tr>td"); 

爲了記錄在案,這裏是另一種方式,如果你所有的細胞具有相似的ID「cellxxx」:

var cells = querySelectorAll("td[id^='cell']");