2014-04-22 5 views
2

나는 ID = "포스트"하지만 때 여러 된 div가 페이지에서어떻게 같은 ID로 여러 된 div를 편집 할 수 document.getElementById를 ("mydiv")를 사용합니까

<script> 
function myFunction() 
{ 
document.getElementById("post").style.backgroundColor="#ECF6A4"; 
} 
</script> 
<button onclick="myFunction()">Change Post Color</button> 

입니다 무엇을 가지고 나는 코드를 저장하고 그것을 시험해 봄으로써 페이지의 첫 번째 div의 배경을 id = "post"가 아닌 다른 것으로 바꾼다.

나는 행운과 함께 getElementsById를 시도했다. 내가 생각할 수있는 것이 전부다.

간단한 수정 사항이 있습니까?

+3

예, ID를 클래스로 변경하고'getElementsByClassName()'을 사용하십시오. 동일한 ID를 공유하는 요소가 여러 개 있다고 가정하지 않았습니다. – BoltClock

+1

ID는 고유해야합니다. – phylax

+1

getElementsByClassName()을 시도하고 있지만 아무것도 변경되지 않습니다. – user3561550

답변

1

당신은 ID 대신 클래스를 사용해야합니다 이상 때문에

getElementsByClassName() 

는 반복.

document.getElementsByClassName('class').style.backgroundColor = "#ECF6A4" 
+0

'.style.backgroundColor'? nodeList에 대해 그렇게 작동한다고 생각하지 마십시오. –

+0

당신이 맞아요. jQuery'$ ('. class')와 같을 것 같아요 .css ('backgroundColor', 'yellow'); –

2

동일한 페이지의 동일한 ID를 가진 여러 div가 잘못된 태그입니다. 중복 ID는 유효하지 않습니다.

그래서 클래스 PLS 를 사용하여 여러 요소를 참조 할 때 그들이

1

내가 이미 finished my demo

당신이 쓴 이후 : trying getElementsByClassName() but nothing changes 그 이유는 getElementsByClassName() 배열을 반환하고 당신이 .style.backgroundColor="#ECF6A4";

function myFunction() 
{ 
    var listItems = document.getElementsByClassName("even"); 
    for (var i = 0; i < listItems.length; i++) 
    { 
     listItems[i].style.backgroundColor="#ECF6A4"; // element i of array 
    } 
} 
를 사용하기 전에이 배열의 각 요소에 액세스해야

그리고 html

<ul> 
    <li class="odd">1</li> 
    <li class="even">2</li> 
    <li class="odd">3</li> 
    <li class="even">4</li> 
    <li class="odd">5</li> 
    <li class="even">6</li>  
</ul> 
<button onclick="myFunction()">Change Color for even</button>