채택완료

채크박스 전체선택 스크립트중에 궁금한것이 있습니다.

2016-09-11 (일) 17:01:21 4,712
Copy
<form name="MyForm" action="" method="post"><input type="checkbox" name="chkAll" onclick="javascript:goAllChk()" />전체선택<br /><input type="checkbox" name="list" id="list" value="1" />C#<br /><input type="checkbox" name="list" id="list" value="2" />Java<br /><script language="javascript">  function goAllChk(){    var obj = document.MyForm;    for(ii=0;ii<obj.list.length;ii++){      obj.list[ii].checked=obj.chkAll.checked;    }  }</script></form>

채크박스 전체선택 소스가 위와 같은데요

id와 name 이 다중검색 때문에 list 가 아닌 list[] 이렇게 되어있습니다.

id 나 name 값에 [] 가 있을경우 위 전체선택 해제 스크립트를 어떻게 적용시키나요?

답변 4개 / 댓글 1개

채택된 답변
+20 포인트
2016-09-11 (일) 17:41:05
Copy
<form name="MyForm" action="" method="post"><input type="checkbox" name="chkAll" onclick="javascript:goAllChk()" />전체선택<br /><input type="checkbox" class="clickme" name="list[]" id="list" value="1" />C#<br /><input type="checkbox" class="clickme" name="list[]" id="list" value="2" />Java<br /><script language="javascript">function goAllChk(){   var obj = document.getElementsByClassName("clickme");     for(ii=0; ii < obj.length; ii++){        obj[ii].checked = document.MyForm.chkAll.checked;    }}</script></form>

답변에 대한 댓글 1개

2016-09-11 (일) 17:55:12
글러빙님 답변 고맙습니다^^

정확히 뭘 하시려는 건지는 모르겠지만 전체선택 및 해제 같은 경우 이렇게 구현합니다.

name이 list[] 인 것을 for문으로 돌리면서 해당 체크박스 중에 체크가 되어있지 않은 것이 1개라도 있다면 전체체크를 하시고 전체체크가 되어 있다면 체크해제를 하시면 됩니다. 체크가되어 있는지 여부는 총 체크박스 수와 체크되어 있는 수와 비교를 하시면 되겠지요~

그리고 checked 값은 true 와 false로 하시면 됩니다. document.MyForm.chkAll.checked로 하지 않으셔도 되요~

참고로 id속성의 이름은 document내에서 고유해야 합니다. 질문자님처럼 id="list" 이렇게 똑같은 이름을 중복해서 사용해서는 안됩니다. list1, list2 ... 처럼 순번을 매기시거나 똑같은 이름을 사용하시려면 class 속성을 사용하세요. 

Copy
<form name="MyForm" action="" method="post"><input type="checkbox" name="chkAll" onclick="javascript:goAllChk()" />전체선택<br /><input type="checkbox" name="list[]" id="list" value="1" />C#<br /><input type="checkbox" name="list[]" id="list" value="2" />Java<br /><script language="javascript">  function goAllChk(){     var chk = document.getElementsByName("list[]");     for(ii=0;ii<obj.list.length;ii++){      chk[i].checked = obj.chkAll.checked    }  }</script></form>

이런식으로 한번 해보시기 바랍니다.

list[]는 배열인데..이걸 엘레멘트로 처리해서 하면될듯합니다.

2016-09-11 (일) 17:13:30

아니면 단순하게 onclick 으로 특정 class 채크박스를 checked 할수 있을까요? 

답변을 작성하려면 로그인이 필요합니다.