채크박스 전체선택 스크립트중에 궁금한것이 있습니다.
본문
<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
<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>
아니면 단순하게 onclick 으로 특정 class 채크박스를 checked 할수 있을까요?
<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[]는 배열인데..이걸 엘레멘트로 처리해서 하면될듯합니다.
!-->
정확히 뭘 하시려는 건지는 모르겠지만 전체선택 및 해제 같은 경우 이렇게 구현합니다.
name이 list[] 인 것을 for문으로 돌리면서 해당 체크박스 중에 체크가 되어있지 않은 것이 1개라도 있다면 전체체크를 하시고 전체체크가 되어 있다면 체크해제를 하시면 됩니다. 체크가되어 있는지 여부는 총 체크박스 수와 체크되어 있는 수와 비교를 하시면 되겠지요~
그리고 checked 값은 true 와 false로 하시면 됩니다. document.MyForm.chkAll.checked로 하지 않으셔도 되요~
참고로 id속성의 이름은 document내에서 고유해야 합니다. 질문자님처럼 id="list" 이렇게 똑같은 이름을 중복해서 사용해서는 안됩니다. list1, list2 ... 처럼 순번을 매기시거나 똑같은 이름을 사용하시려면 class 속성을 사용하세요.
답변을 작성하시기 전에 로그인 해주세요.