2013-02-10 2 views
1

JQuery를 사용하지 않고 자바 스크립트에서 한 번에 둘 이상의 ID를 얻을 수 있는지 궁금합니다. 동적으로 생성 된 테이블에서 각 셀의 배경색을 확인하고 있습니다. 나는 모든 내가 너무 잘 알고 아니에요으로 JQuery와 사용하지 않는 것을 시도하고자바는 한 번에 하나 이상의 ID를 얻습니다.

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

:

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

가 이런 식으로 뭔가를 할 수있을 것이다 : 예를 들어,이 코드가 그것.

+1

이러한 기능이 없습니다. – SLaks

+0

아니요. 함수의 특성상,'getElementById'는 오직 하나의 원소를 반환해야합니다. 그래도 자신 만의 글을 쉽게 쓸 수 있습니다. – BenM

+0

아마도 jQuery를 사용할 수 있습니다. – Jeff

답변

1
당신이 querySelectorAll ( compatibility 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

아니요, jQuery 또는 다른 javascript 도우미 라이브러리를 사용하지 않습니다.

querySelector는 IE7 의해지지되는 아래 여전히합니다 traffice 기본적 http://caniuse.com/#feat=queryselector

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

이렇게하면 ID 배열을 매개 변수로 사용하여 배열의 요소를 반환합니다. document.querySelector 방법을 살펴볼 수도 있습니다.

+0

querySelectorAll과 같은 다른 방법이 있지만 getElementById를 고수하면 최상의 성능을 제공합니다. – Christophe

0

@ BenM의 답변을 upvoted했지만 다른 옵션을 제안하고 싶습니다.

문제 :

나는이 경우 각 셀

의 배경 색상을 확인하고있어,이 테이블 자체에 ID를 첨부 할 더 의미가있다. 당신의 선택은 (더 중첩 테이블 없다고 가정)이된다 :

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

또는 최근의 브라우저

: 모든 세포가 유사한 ID가 "cellxxx"이 경우 기록을 위해

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

가 여기에 또 다른 방법입니다 :

var cells = querySelectorAll("td[id^='cell']"); 
관련 문제