2012-10-03 5 views
2

javascript를 사용하여 선택한 메뉴를 구현하고 있습니다. 예 : jsfiddle. 여기에서 div의 innerHTML 스타일을 변경하면 블록이 선택됩니다.이미 설정된 자바 스크립트로 스타일을 바꾸는 방법은 무엇입니까?

하지만 이미 설정된 스타일을 바꾸는 방법은 무엇입니까?

여기 내 문제는 선택할 수 없습니다 블록 1입니다.

전체 HTML 코드 :

<style> 
div {width:10px;height:10px;margin:10px; 
    background:#ccc;cursor:pointer;padding:10px; 
} 
</style> 
<div id="makeThatEnable" style="display:none"></div> 

<div id="one" onclick="makeThisEnable(this.id)" style="border:1px solid #00f">1</div> 
<div id="two" onclick="makeThisEnable(this.id)">2</div> 
<div id="three" onclick="makeThisEnable(this.id)">3</div> 
<div id="four" onclick="makeThisEnable(this.id)">4</div> 
<div id="five" onclick="makeThisEnable(this.id)">5</div> 
<br> 
Click on box to select it. 

<script> 
function makeThisEnable(id) { 
    document.getElementById('makeThatEnable').innerHTML="<style> #"+id+" {border:1px solid #f00}</style>"; 
} 
</script> 

답변

2

나는 더 나은 접근 방식을 가지고 있습니다. 고유하게 그런 스타일, 간단한 증가 선언의 특이 등을 강제로 !important를 사용하는이

function makeThisEnable(id) { 
    document.getElementById('innerStyle').innerHTML="div#"+id+" {border:1px solid #f00}"; 
} 

처럼 기능을 대신 갱신이

<style id="innerStyle"> 
</style> 

같은 스타일 요소를 식별 내가 뭐하는 거지.

DEMO

+0

@vusan, 특별히이 방법을 사용합니다. DOM에 존재하지만 스스로 보이지 않는 여분의 컨테이너'div'를 사용하지 않습니다. 또한'! important'의 사용은 가능한 한 피해야합니다. – Starx

0

document.getElementById('makeThatEnable').setAttribute('css', 'your prefered style'); 
+0

그 ID로 스타일을 설정하지 않습니다. 그리고 css가 속성이라고 말해 주시겠습니까? – vusan

1

사용의 setAttribute 방법은 같은 CSS의 말에 !important를 추가 - 두 개의 클래스 만들기>

document.getElementById('makeThatEnable').innerHTML="<style> #"+id+" {border:1px solid #f00 !important;}</style>";

+0

@vusan,'! important'를 사용하는 것보다 더 좋은 방법이 있습니다. 내 대답을 확인해. – Starx

0

(박스 , unboxed). 클릭하면 모든 항목을 unboxed로 설정 한 후 클릭 한 항목을 boxed로 설정합니다.

<style> 
.boxed 
    {border:1px solid #f00} 
.unboxed 
    {border:0px solid #f00} 
</style> 

<script> 
function makeThisEnable(id) { 
    var ids = new Array("one", "two", "three", "four", "five"); 
    for (var i=0; i<ids.length; i++) { 
     document.getElementById(ids[i]).setAttribute("class", "unboxed");  
    } 
    document.getElementById(id).setAttribute("class", "boxed");  
} 
</script> 
관련 문제