最近在做項目時,遇到一個這樣的需求蒿赢,就是在多級菜單中,選中二級的復選框渣触,默認將它下面的三級復選框全部選中羡棵,若選中一級的復選框,默認的將它下面的二級的和三級的復選框全部選中昵观,通過JS晾腔,可以得到當前頁面所有的復選框舌稀,但對于如何判斷子級的復選框也能選中,就有些不太明白了灼擂,向朋友請教了下壁查,呵呵,終于撥云見天了剔应,感謝睡腿,方法如下,給遇到我類似需求的朋友一個參考峻贮!
1席怪、首先得到當前頁面所有的復選框,這個有兩種方法:定義最外層的DIV的ID為chks的話
法一:var ipt = document.getElementById("chks").getElementsByTagName("input");
法二:var inputs = document.getElementsByTagName("input");
for(var i=0;i<inputs.length;i++){
if(inputs[i].type == "checkbox"){}
}
這樣也行纤控,只不過法二比較麻煩些挂捻。
2、判斷級聯(lián)船万,其實方法挺簡單的刻撒,大致這樣,一級的ID為a1,a2,a3耿导,二級的為a1b1,a1b2声怔,a2b1,a2b2,a2b3樣的,三級的為a1b1c1,a1b1c2,a1b1,c3,a1b2c1,a1b2c2,a1b2c3等等舱呻,然后就可以用indexOf來判斷是否是子級了醋火,說了這么多,下面將整個代碼貼出來箱吕。
<html>
<head>
<title></title>
<script type="text/javascript">
function mselect(chk){
var id = [圖片上傳失敗...(image-93f219-1522378863078)]
chk.id
//獲取當前復選框的ID
var chked = chk.checked;//將當前復選框選中芥驳,
var ipt = document.getElementById("chks").getElementsByTagName("input");
for(var i=0; i<ipt.length; i++){
//判斷a1b1是否是a1的子級,若是的話殖氏,返回0晚树,若不是,則返回-1
if(ipt[i].id.indexOf(id)>-1){
ipt[i].checked = chked;
}
}
}
</script>
</head>
<body>
<div id="chks">
<input type="checkbox" value="0" id="a001" onclick="mselect(this);" >一級
???├──<input type="checkbox" value="0" id="a001001" onclick="mselect(this);" >二級
???├──<input type="checkbox" value="0" id="a001002" onclick="mselect(this);" >二級
??????├──<input type="checkbox" value="0" id="a001002001" onclick="mselect(this);" >三級
??????├──<input type="checkbox" value="0" id="a001002002" onclick="mselect(this);" >三級
??????├──<input type="checkbox" value="0" id="a001002003" onclick="mselect(this);" >三級
?????????├──<input type="checkbox" value="0" id="a001002003001" onclick="mselect(this);" >四級
?????????├──<input type="checkbox" value="0" id="a001002003002" onclick="mselect(this);" >四級
?????????├──<input type="checkbox" value="0" id="a001002003003" onclick="mselect(this);" >四級
?????????├──<input type="checkbox" value="0" id="a001002003004" onclick="mselect(this);" >四級
?????????├──<input type="checkbox" value="0" id="a001002003005" onclick="mselect(this);" >四級
?????????├──<input type="checkbox" value="0" id="a001002003006" onclick="mselect(this);" >四級
??????├──<input type="checkbox" value="0" id="a001002004" onclick="mselect(this);" >三級
??????├──<input type="checkbox" value="0" id="a001002005" onclick="mselect(this);" >三級
???├──<input type="checkbox" value="0" id="a001003" onclick="mselect(this);" >二級
<input type="checkbox" value="0" id="a002" onclick="mselect(this);" >一級
</div>
</body>
</html>