뭐죠간의 차이 X = document.getElementById를 ("ID"). 클래스 명 = X = document.getElementById를 ("ID") = x.className
<div class="w3-dropdown-click">
<button class="w3-btn" onclick="clickDrp()">Hover Over me</button>
<div class="w3-dropdown-content w3-animate-zoom w3-bar-block" id="cont">
<a href="#" class="w3-bar-item w3-button">SomeLink1</a>
<a href="#" class="w3-bar-item w3-button">SomeLink2</a>
<a href="#" class="w3-bar-item w3-button">SomeLink3</a>
<a href="#" class="w3-bar-item w3-button">SomeLink4</a>
</div>
</div>
<script type="text/javascript">
function clickDrp(){
var x = document.getElementById("cont").className;
if(x.search("w3-show") == -1)
x += " w3-show";
else
x = x.replace(" w3-show","");
}
</script>
및
다음 코드 차가<div class="w3-dropdown-click">
<button class="w3-btn" onclick="clickDrp()">Hover Over me</button>
<div class="w3-dropdown-content w3-animate-zoom w3-bar-block" id="cont">
<a href="#" class="w3-bar-item w3-button">SomeLink1</a>
<a href="#" class="w3-bar-item w3-button">SomeLink2</a>
<a href="#" class="w3-bar-item w3-button">SomeLink3</a>
<a href="#" class="w3-bar-item w3-button">SomeLink4</a>
</div>
</div>
<script type="text/javascript">
function clickDrp(){
var x = document.getElementById("cont");
if(x.className.search("w3-show") == -1)
x.className += " w3-show";
else
x.className = x.className.replace(" w3-show","");
}
</script>
두 번째 드롭 다운 메뉴는 정상적으로 작동합니다. x가 글로벌 변수가 된 경우에도 처음에는 그렇지 않습니다.
저는 javascript에 익숙하지 않아 그 이유를 알 수 없습니다. 누군가 추론 할 수 있습니까?
PS : 나는 첫 번째 변형에서 W3-CSS를
x가 전역 변수 인 경우 어떻게해야합니까 ?? –
@PrajvalM은 차이가 없습니다. – Pointy
@PrajvalM, 그건 부적절합니다. 문자열 값을 변수 (로컬, 전역 또는 일부 개체의 속성 - 중요하지 않음)에 할당하면 복사본을 할당하게됩니다. 문자열은 프리미티브 값입니다 (변경 불가능). 'className' 속성의 값을 변경하는 유일한 방법은 새로운 문자열을 할당하는 것입니다. 변수에 대입하여이 작업을 수행 할 수 없으면'className' 속성이 필요합니다. – trincot