JS實(shí)現(xiàn)點(diǎn)餐自動選擇框(案例分析)
效果圖:

1. 目標(biāo)需求(一共兩個):
1.點(diǎn)擊上方全選/全不選選擇框,實(shí)現(xiàn)對應(yīng)功能
2.點(diǎn)擊下方選擇框,如果所有選擇框同時被選中,則上方全選框自動變成勾選狀態(tài),否則是非勾選狀態(tài)
2.思路分析:
1.實(shí)現(xiàn)上面選擇框全選全不選功能,添加上面的鼠標(biāo)點(diǎn)擊事件,讓下方所有選擇框跟上方一樣就行
2.下方選擇框在點(diǎn)擊時,使用開關(guān)思想來檢查是否是全部都選擇的狀態(tài)
3.js實(shí)現(xiàn)步驟:
上方全選/全不選選擇框,實(shí)現(xiàn)步驟
1.獲取元素
var chkAll=document.getElementById('checkAll');
var chkList=document.getElementsByName('check');
2.實(shí)現(xiàn)上方選擇框全選/全不選功能
chkAll.onclick=function ( ) {
for(var i=0;i<chkList.length;i++){
chkList[i].checked=this.checked;
}
}
3.下方選擇框點(diǎn)擊
開關(guān)思想:當(dāng)一個操作的結(jié)果只有兩種狀態(tài),就可以使用布爾類型來表示這兩種狀態(tài) isAllOk = true(全部選中)
1.提出假設(shè) isAllOk = true
2.驗(yàn)證假設(shè)
3.根據(jù)驗(yàn)證結(jié)果來實(shí)現(xiàn)需求
//3.1遍歷下方按鈕,檢查下方按鈕的點(diǎn)擊事件
for(var i=0;i<chkList.length;i++){
chkList[i].onclick=function ( ) {
var isAllChecked=true;//假設(shè)全部都是選中狀態(tài)
for(var j=0;j<chkList.length;j++){
if(chkList[j].checked==false){
isAllChecked=false;
}
}
//檢測完畢之后,根據(jù)開關(guān)的值來設(shè)置上方選擇框的狀態(tài)
if(isAllChecked==true){
chkAll.checked=true;
}
else {
chkAll.checked=false;
}
}
}
最后附上完整的代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
margin: 0;
padding: 0;
}
table {
border: 1px solid #c0c0c0;
margin: 100px auto;
/*margin兩個值代表上下,左右*/
text-align: center;
width: 500px;
border-collapse: collapse;
/*邊框合并,如果相鄰,則共用一個邊框*/
}
th{
font:bold 15px "微軟雅黑";
background-color: #09c;
color: #fff;
height: 24px;
}
td {
border: 1px solid #d0d0d0;
color: #404060;
padding: 15px;
}
</style>
</head>
<body>
<table>
<!--caption是表格的標(biāo)題-->
<caption>點(diǎn)餐系統(tǒng)</caption>
<thead>
<tr>
<th>
<input type="checkbox" id="checkAll">全選/全不選
</th>
<th>菜名</th>
<th>商家</th>
<th>價(jià)格</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<input type="checkbox" name="check"/>
</td>
<td>紅燒肉</td>
<td>隆江豬腳飯</td>
<td>¥200</td>
</tr>
<tr>
<td>
<input type="checkbox" name="check"/>
</td>
<td>香酥排骨</td>
<td>隆江豬腳飯</td>
<td>¥998</td>
</tr>
<tr>
<td><input type="checkbox" name="check"/></td>
<td>北京烤鴨</td>
<td>隆江豬腳飯</td>
<td>¥88</td>
</tr>
</tbody>
<tfoot>
<tr>
</tr>
</tfoot>
</table>
<script>
//1.獲取界面對應(yīng)元素
var chkAll=document.getElementById('checkAll');
var chkList=document.getElementsByName('check');
//2.實(shí)現(xiàn)上方選擇框全選/全不選功能
chkAll.onclick=function ( ) {
for(var i=0;i<chkList.length;i++){
chkList[i].checked=this.checked;
}
}
//3.實(shí)現(xiàn)下方選擇功能
//3.1遍歷下方按鈕,檢查下方按鈕的點(diǎn)擊事件
for(var i=0;i<chkList.length;i++){
chkList[i].onclick=function ( ) {
var isAllChecked=true;//假設(shè)全部都是選中狀態(tài)
for(var j=0;j<chkList.length;j++){
if(chkList[j].checked==false){
isAllChecked=false;
}
}
//檢測完畢之后,根據(jù)開關(guān)的值來設(shè)置上方選擇框的狀態(tài),下面也可以簡寫為 checkAll.checked = isAllChecked;
if(isAllChecked==true){
chkAll.checked=true;
}
else {
chkAll.checked=false;
}
}
}
</script>
</body>
</html>
總結(jié)
以上所述是小編給大家介紹的JS實(shí)現(xiàn)點(diǎn)餐自動選擇框,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
利用JS實(shí)現(xiàn)scroll自定義滾動效果詳解
這篇文章主要給大家介紹了關(guān)于利用JS如何實(shí)現(xiàn)scroll自定義滾動效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
axios如何利用promise無痛刷新token的實(shí)現(xiàn)方法
這篇文章主要介紹了axios如何利用promise無痛刷新token的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
JS+ACTIVEX實(shí)現(xiàn)網(wǎng)頁選擇本地目錄路徑對話框
使用ACTIVEX對象遍歷本地磁盤和目錄,只需網(wǎng)頁啟用相關(guān)ACTIVEX的INTERNET選項(xiàng)即可實(shí)現(xiàn)路徑選擇對話框,感興趣的你可以參考下哈希望可以幫助到你2013-03-03
如何快速高效創(chuàng)建JavaScript 二維數(shù)組方法詳解
這篇文章主要為大家介紹了如何快速高效創(chuàng)建JavaScript 二維數(shù)組方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
用瀑布流的方式在網(wǎng)頁上插入圖片的簡單實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄闷俨剂鞯姆绞皆诰W(wǎng)頁上插入圖片的簡單實(shí)現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09
基于JavaScript實(shí)現(xiàn)跳轉(zhuǎn)提示頁面
這篇文章主要介紹了基于JavaScript實(shí)現(xiàn)跳轉(zhuǎn)提示頁面 的相關(guān)資料,需要的朋友可以參考下2016-09-09

