2016-09-28 3 views
0

확인란을 클릭하면 자바 스크립트 바닐라로 표시를 전환하는 방법. 자바 스크립트 바닐라로 디스플레이 전환

나는 단 하나 개의 요소 시도하고 작동하지만이 둘 이상있는 경우 ... 난 내 코드에 넣고 ->

function OnlyOK(){  
var ul = document.getElementsByClassName('RQ'); 
     for (i = 0; i < ul.length; i++) { 
       ul[i].style.display = 'none'; 
     } 
//else ul[i].style.display = 'block';??? 
    } 

그리고 토글 디스플레이의 경우 (없음, 블록) 단 하나의 요소 (첫 번째 요소 1 개) ...이 작품!

function OnlyOK(){ 
    var ul = document.getElementsByClassName('RQ'); 
    ul.style.display = ul.style.display === 'none' ? '' : 'none'; 
} 

나는 getElementsById도 시도했습니다! 하지만 나는 수업에서 일하는 것을 더 좋아합니다.

+1

HTML로 모든 것이 정상적으로 작동합니까? 그것은 [여기] (http://codepen.io/razvan-tudosa/pen/XjgyrA)에서 작동하는 것으로 보인다. –

+0

예 ... 첫 번째 코드가 두 번째 예가 아닙니다! 하지만 첫 번째가 필요합니다 –

+0

두 번째 것은 작동하지 않습니다 ... 나는 인덱스'ul [0]'또는 이와 유사한 것을 잊어 버린 것 같아요 – devnull69

답변

3

기본적으로 체크 박스를 클릭하고 체크 한 후 확인란을 선택 취소 한 후 다시 표시 할 때 몇 가지 요소를 숨기시겠습니까?

당신은 그런 일이 같은 얻을 수 있습니다

function OnlyOK(flag){  
    var ul = document.getElementsByClassName('RQ'); 
    for (i = 0; i < ul.length; i++) { 
      if (flag) { 
      ul[i].style.display = 'none'; 
      } else { 
      ul[i].style.display = 'block'; 
      } 

    } 
} 

document.querySelector('#ck') 
    .addEventListener('change', function(event) { 
     console.log(event); 
     OnlyOK(event.target.checked); 
    }); 

을이 HTML로 :

<ul> 
    <li class="RQ">Some item to hide</li> 
    <li class="RQ">Hide me</li> 
    <li class="RQ">I will be gone</li> 
    <li>I do not have class :(</li> 
</ul> 

<input type="checkbox" id="ck"/> 

Here은 작업 예입니다.

+0

null의 속성 'addEventListener'을 읽을 수 없습니다 무엇이 문제 일 수 있습니까? ... 나는 ck id와 새 javascript jquery가 설치되어 있지 않아도 될 수 있습니까? –

+0

내 예제에서는 jQuery를 사용하지 않으므로 그렇지 않을 수 있습니다. 당신이 말하고있는 것에서 그것은 그 요소를 찾지 못하는 것 같아요. JSBin의 예가 효과가 있습니까? –

+0

안돼 ... 나는 모든 ur 코드를 시도해 ... 같은 당신이 있지만 오류가 콘솔에 –

0
<input type="checkbox" class="eq" onchange="onlyOk(this)"></input> 

function onlyOk(obj){ 
var rq = document.getElementsByClassName("RQ"); 
var i; 
var display = obj.checked ? "none" : ""; 

     for (i = 0; i > rq.length; i++){ 
       rq[i].style.display = display; 
     } 

} 
+0

변수를 사용하여 하나의 루프를 제거 할 수 있습니다 :'var display = obj.checked? "none": ""; '을 사용하여 각 요소에 할당합니다. – Marcelo

+0

기능 코드의 절반을 잘라낸 좋은 수정! @ 마르셀로 –

관련 문제