2012-11-16 3 views
0

안녕하세요 각 섹션을 클릭 할 때 배경색이 앞뒤로 전환되는 가로 탐색 막대가 있습니다. 그러나 단 하나의 섹션 만 '활성'으로 보이기를 바랍니다. 즉, 한 번에 하나의 섹션 만 다른 배경색을 가질 수 있습니다. 자바 스크립트div 배경색이 한 번에 하나의 강조 표시된 div로 앞뒤로 변경됩니다.

function changeColor(e) { 
var c = e.className; 
e.className = (c == 'color1') ? 'nav' : 'color1'; 
} 

<ul class="nav"> 
    <li><a href="javascript:Tog('1')" onclick="changeColor(this)">Search</a></li> 
    <li><a href="javascript:Tog('2')" onclick="changeColor(this)">Legend</a></li> 
    <li><a href="javascript:Tog('3')" onclick="changeColor(this)">Info</a></li> 
</ul>" 

는 순수 자바 스크립트를 사용하여 도움

답변

0

주셔서 감사합니다 :

<ul class="nav"> 
     <li><a href="#1" id="link1" onclick="changeColor(this)">Search</a></li> 
     <li><a href="#2" id="link2" onclick="changeColor(this)">Legend</a></li> 
     <li><a href="#3" id="link3" onclick="changeColor(this)">Info</a></li> 
    </ul> 

    <script type="text/javascript"> 
     function changeColor(e) { 
      var arr =e.parentNode.parentNode.querySelectorAll('.color1'); 
      for(var i=0;i<arr.length;i++){ 
       arr[i].className = 'nav'; 
      } 
      var c = e.className;  
      e.className = (c == 'color1') ? 'nav' : 'color1'; 
      checkHashChange(); 
     } 

     var currentPage = 0; 
     function checkHashChange(){ 
      var newPage = window.location.href.substring(window.location.href.length -1 , window.location.href.length); 
      if(currentPage != newPage) { 
       currentPage = newPage; 
       changeColor(document.getElementById('link'+currentPage)); 
      } 
      setTimeout('checkHashChange();', 100); 
     } 
    </script> 
    <style type="text/css"> 
     .color1{ 
     background: #444; 
     } 

     .nav{ 
     background: #eee; 
     } 
    </style> 
+0

안녕 덕분에. 이것은 한 번에 하나의 섹션 만 강조 표시 할 수 있다는 점에서 효과적입니다. 그러나 동일한 섹션을 다시 클릭하면 원래 색으로 되돌아 가지 않습니다. 즉, 섹션을 두 번 클릭하면 두 번째 클릭으로 색상이 변경되지 않습니다. – Andrew

+0

그는 순수한 자바 스크립트를 사용하고 있지 않습니다. – defau1t

+0

죄송합니다. 이해할 수 없다고 생각합니다. 그것은 순수한 자바 스크립트를 사용하여 수행 할 수 없다는 뜻입니까? – Andrew

관련 문제