JavaScript-全选练习

全选练习

1. 任务

  1. 全选按钮
    • 点击按钮以后,四个多选框全都被选中
  2. 全不选按钮
    • 点击按钮以后,四个多选框都变成没选中的状态
  3. 反选按钮
    • 点击按钮以后,选中的变成选中,没选中的变成选中
  4. 提交按钮
    • 点击按钮以后,将所有选中的多选框的 value 属性值弹出
  5. 全选/全不选
    • 当它选中时,其余的也选中,当它取消时其余的也取消
  6. 全选/全不选和多选框动态绑定
    • 如果四个多选框全都选中,则 checkedAllBox 也应该选中
    • 如果四个多选框没都选中,则 checkedAllBox 也不应该选中

JavaScript-全选练习

2. 步骤

  1. 获取四个多选框
  2. 获取全选全不选的多选框
//获取四个多选框
var items = document.getElementsByName("items");
//获取全选全不选的多选框
var checkedAllBox = document.getElementById("checkedAllBox");

2.1 #checkedAllBtn 全选按钮

点击按钮以后,四个多选框全都被选中

  1. 为 id 为 checkedAllBtn 的按钮绑定一个单击响应函数
  2. 遍历 items
  3. 通过多选框的 checked 属性可以来获取或设置多选框的选中状态
  4. 设置四个多选框变成选中状态
  5. 将全选全不选设置为选中
/*
 * 全选按钮
 *  - 点击按钮以后,四个多选框全都被选中
 */
//1.#checkedAllBtn
//为id为checkedAllBtn的按钮绑定一个单击响应函数
var checkedAllBtn = document.getElementById("checkedAllBtn");
checkedAllBtn.onclick = function () {
    
    
  //遍历items
  for (var i = 0; i < items.length; i++) {
    
    
    //通过多选框的checked属性可以来获取或设置多选框的选中状态
    //alert(items[i].checked);

    //设置四个多选框变成选中状态
    items[i].checked = true;
  }

  //将全选全不选设置为选中
  checkedAllBox.checked = true;
};

2.2 #checkedNoBtn 全不选按钮

点击按钮以后,四个多选框都变成没选中的状态

  1. 为 id 为 checkedNoBtn 绑定一个单机响应函数
  2. 将四个多选框设置为没选中的状态
  3. 将全选全不选设置为不选中
/*
 * 全不选按钮
 *  - 点击按钮以后,四个多选框都变成没选中的状态
 */
//2.#checkedNoBtn
//为id为checkedNoBtn绑定一个单机响应函数
var checkedNoBtn = document.getElementById("checkedNoBtn");
checkedNoBtn.onclick = function () {
    
    
  for (var i = 0; i < items.length; i++) {
    
    
    //将四个多选框设置为没选中的状态
    items[i].checked = false;
  }
  //将全选全不选设置为不选中
  checkedAllBox.checked = false;
};

2.3 #checkedRevBtn 反选按钮

点击按钮以后,选中的变成选中,没选中的变成选中

  1. 将 checkedAllBox 设置为选中状态
  2. 判断多选框的状态
    • 证明多选框选中,则设置为没选中状态
    • 证明多选框没选中
  3. 判断四个多选框是否全选
    • 只要有一个没选中则不是全选
    • 一旦进入判断则证明不是全选状态
  4. 将 checkedAllBox 设置为没选中状态
  5. 一旦进入判断,则已经得出结果,不用继续执行循环
  6. 在反选时也需要判断四个多选框是否全都选中
/*
 * 反选按钮
 *  - 点击按钮以后,选中的变成选中,没选中的变成选中
 */
//3.#checkedRevBtn
var checkedRevBtn = document.getElementById("checkedRevBtn");
checkedRevBtn.onclick = function () {
    
    
  //将checkedAllBox设置为选中状态
  checkedAllBox.checked = true;
  for (var i = 0; i < items.length; i++) {
    
    
    //判断多选框的状态
    /* if(items[i].checked){
      	//证明多选框选中,则设置为没选中状态
      	items[i].checked = false;
      }else{
      	//证明多选框没选中
      	items[i].checked = true;
      } */

    items[i].checked = !items[i].checked;
    //判断四个多选框是否全选
    //只要有一个没选中则不是全选
    if (!items[i].checked) {
    
    
      //一旦进入判断则证明不是全选状态
      //将checkedAllBox设置为没选中状态
      checkedAllBox.checked = false;
      //一旦进入判断,则已经得出结果,不用继续执行循环
    }
  }
  //在反选时也需要判断四个多选框是否全都选中
};

2.4 #sendBtn 提交按钮

点击按钮以后,将所有选中的多选框的 value 属性值弹出

  1. 为 sendBtn 绑定单机响应函数
  2. 遍历 items
  3. 判断多选框是否选中
/*
 * 提交按钮
 *  - 点击按钮以后,将所有选中的多选框的value属性值弹出
 */
//4.#sendBtn
//为sendBtn绑定单机响应函数
var senBtn = document.getElementById("sendBtn");
sendBtn.onclick = function () {
    
    
  //遍历items
  for (var i = 0; i < items.length; i++) {
    
    
    //判断多选框是否选中
    if (items[i].checked) {
    
    
      alert(items[i].value);
    }
  }
};

2.5 checkedAllBox 全选/全不选

当它选中时,其余的也选中,当它取消时其余的也取消

  1. 在事件的响应函数中,响应函数是给谁绑定的 this 就是谁
  2. 为 checkedAllBox 绑定单机响应函数
  3. 设置多选框的选中状态
//#5.checkedAllBox
/*
 * 全选/全不选 多选框
 * - 当它选中时,其余的也选中,当它取消时其余的也取消
 *
 * 在事件的响应函数中,响应函数是给谁绑定的this就是谁
 */
//为checkedAllBox绑定单机响应函数
checkedAllBox.onclick = function () {
    
    
  //alert(this === checkedALLBox);
  //设置多选框的选中状态
  for (var i = 0; i < items.length; i++) {
    
    
    items[i].checked = this.checked;
  }
};

2.6 items 全选/全不选和多选框动态绑定

如果四个多选框全都选中,则 checkedAllBox 也应该选中
如果四个多选框没都选中,则 checkedAllBox 也不应该选中

  1. 为四个多选框分别绑定单击响应函数
  2. 将 checkedAllBox 设置为选中状态
  3. 判断四个多选框是否全选
    • 只要有一个没选中则不是全选
    • 一旦进入判断则证明不是全选状态
  4. 将 checkedAllBox 设置为没选中状态
  5. 一旦进入判断,则已经得出结果,不用继续执行循环
//#6.items
/*
 * 如果四个多选框全都选中,则checkedAllBox也应该选中
 * 如果四个多选框没都选中,则checkedAllBox也不应该选中
 */
//为四个多选框分别绑定单击响应函数
for (var i = 0; i < items.length; i++) {
    
    
  items[i].onclick = function () {
    
    
    //将checkedAllBox设置为选中状态
    checkedAllBox.checked = true;
    for (var j = 0; j < items.length; j++) {
    
    
      //判断四个多选框是否全选
      //只要有一个没选中则不是全选
      if (!items[j].checked) {
    
    
        //一旦进入判断则证明不是全选状态
        //将checkedAllBox设置为没选中状态
        checkedAllBox.checked = false;
        //一旦进入判断,则已经得出结果,不用继续执行循环
        break;
      }
    }
  };
}

3. 完整代码实现

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>全选练习</title>
    <script type="text/javascript">
      window.onload = function () {
      
      
        var items = document.getElementsByName("items");
        var checkedAllBox = document.getElementById("checkedAllBox");

        //1.#checkedAllBtn 全选按钮
        var checkedAllBtn = document.getElementById("checkedAllBtn");
        checkedAllBtn.onclick = function () {
      
      
          for (var i = 0; i < items.length; i++) {
      
      
            items[i].checked = true;
          }
          checkedAllBox.checked = true;
        };

        //2.#checkedNoBtn 全不选按钮
        var checkedNoBtn = document.getElementById("checkedNoBtn");
        checkedNoBtn.onclick = function () {
      
      
          for (var i = 0; i < items.length; i++) {
      
      
            items[i].checked = false;
          }
          checkedAllBox.checked = false;
        };

        //3.#checkedRevBtn 反选按钮
        var checkedRevBtn = document.getElementById("checkedRevBtn");
        checkedRevBtn.onclick = function () {
      
      
          checkedAllBox.checked = true;
          for (var i = 0; i < items.length; i++) {
      
      
            items[i].checked = !items[i].checked;
            if (!items[i].checked) {
      
      
              checkedAllBox.checked = false;
            }
          }
        };

        //4.#sendBtn 提交按钮
        var senBtn = document.getElementById("sendBtn");
        sendBtn.onclick = function () {
      
      
          for (var i = 0; i < items.length; i++) {
      
      
            if (items[i].checked) {
      
      
              alert(items[i].value);
            }
          }
        };

        //#5.checkedAllBox 全选/全不选
        checkedAllBox.onclick = function () {
      
      
          for (var i = 0; i < items.length; i++) {
      
      
            items[i].checked = this.checked;
          }
        };

        //#6.items 全选/全不选和多选框动态绑定
        for (var i = 0; i < items.length; i++) {
      
      
          items[i].onclick = function () {
      
      
            checkedAllBox.checked = true;
            for (var j = 0; j < items.length; j++) {
      
      
              if (!items[j].checked) {
      
      
                checkedAllBox.checked = false;
                break;
              }
            }
          };
        }
      };
    </script>
  </head>
  <body>
    <form method="post" action="">
      你爱好的运动是?<input type="checkbox" id="checkedAllBox" />全选/全不选
      <br />
      <input type="checkbox" name="items" value="足球" />足球
      <input type="checkbox" name="items" value="篮球" />篮球
      <input type="checkbox" name="items" value="羽毛球" />羽毛球
      <input type="checkbox" name="items" value="乒乓球" />乒乓球
      <br />
      <input type="button" id="checkedAllBtn" value="全  选" />
      <input type="button" id="checkedNoBtn" value="全不选" />
      <input type="button" id="checkedRevBtn" value="反  选" />
      <input type="button" id="sendBtn" value="提  交" />
    </form>
  </body>
</html>

猜你喜欢

转载自blog.csdn.net/weixin_64933233/article/details/128591136