javascript全选功能以及动态求和

效果图1

 图2

代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script type="text/javascript">
    function checkAll(all) {
      var count=0;
      // 取得所有要选中的商品的多选框
      var allPro = document.querySelectorAll("#all_pro_div > input");
      for (var i= 0;i < allPro.length;i++) {
        allPro[i].checked = all.checked;
        count = parseInt(allPro[i].value) + count;
        document.querySelector("#resultSpan").value=count;
      }
    }

    function caculate(){
        var count = 0;
      //空格表示只要在里面的元素都可以,但是>表示两者之间一定要是父子关系,中间隔一层都不行

      var selectPro = document.querySelectorAll("#all_pro_div > input:checked");
      for(var i=0;i<selectPro.length;i++){
        /*var selectvalue = document.querySelector("input:checked").value;
          count = selectvalue + count;*/
          var count = parseInt(selectPro[i].value)+count;

    }
      document.querySelector("#resultSpan").value=count;
      /*非闭合标签(起始标记<span>,结束标记</span>)可以使用innerHTML来赋值。如:div、span。
      闭合标签(<input /> 起始和结束都在一个标记内,不能再嵌入其他元素)要使用value来赋值:如input。*/
    }
  </script>
</head>
<body>
  <input type="checkbox" name="all" id="all" οnclick="checkAll(this);" > 全选<br/>
  <div id="all_pro_div">
    <input type="checkbox" name="product" value="1000" οnclick="caculate()"> 笔记本电脑 1000元 <br/>
    <input type="checkbox" name="product" value="2000" οnclick="caculate()"> 笔记本电脑 2000元 <br/>
    <input type="checkbox" name="product" value="3000" οnclick="caculate()"> 笔记本电脑 3000元 <br/>
    <input type="checkbox" name="product" value="4000" οnclick="caculate()"> 笔记本电脑 4000元 <br/>
    <input type="checkbox" name="product" value="5000" οnclick="caculate()"> 笔记本电脑 5000元 <br/>
    <input type="checkbox" name="product" value="6000" οnclick="caculate()"> 笔记本电脑 6000元 <br/>
  </div>
  <input type="button" name="btncount" id="btncount" value="计算" οnclick="caculate()">
  总计:<input type="span" name="resultSpan" id="resultSpan">
</body>
</html>

总结:

  1. //空格表示只要在里面的元素都可以,但是>表示两者之间一定要是父子关系,中间隔一层都不

 var selectPro = document.querySelectorAll("#all_pro_div > input:checked");

2./*非闭合标签(起始标记<span>,结束标记</span>)可以使用innerHTML来赋值。如:div、span。

      闭合标签(<input /> 起始和结束都在一个标记内,不能再嵌入其他元素)要使用value来赋值:如input。*/

document.querySelector("#resultSpan").value=count;

<input type="span" name="resultSpan" id="resultSpan">

 

3.

这种情况代码:

function caculate(){

        var count = 0;

      //空格表示只要在里面的元素都可以,但是>表示两者之间一定要是父子关系,中间隔一层都不行

      var selectPro = document.querySelectorAll("#all_pro_div > input:checked");

      for(var i=0;i<selectPro.length;i++){

        var selectvalue = document.querySelector("input:checked").value;

          count = selectvalue + count;

            //var count = parseInt(selectPro[i].value)+count;

        console.log(count);

      }

    document.querySelector("#resultSpan").value=count;

        }

原因:1.没有进行类型转换,是字符串字符串相加,结果是加长字符串。2.没有循环加结果,没有加【i】时的值,永远默认第一个

选中的值。

4.

  1. //空格表示只要在里面的元素都可以,但是>表示两者之间一定要是父子关系,中间隔一层都不

 var selectPro = document.querySelectorAll("#all_pro_div > input:checked");

2./*非闭合标签(起始标记<span>,结束标记</span>)可以使用innerHTML来赋值。如:div、span。

      闭合标签(<input /> 起始和结束都在一个标记内,不能再嵌入其他元素)要使用value来赋值:如input。*/

document.querySelector("#resultSpan").value=count;

<input type="span" name="resultSpan" id="resultSpan">

3.

这种情况代码:

function caculate(){

        var count = 0;

      //空格表示只要在里面的元素都可以,但是>表示两者之间一定要是父子关系,中间隔一层都不行

      var selectPro = document.querySelectorAll("#all_pro_div > input:checked");

      for(var i=0;i<selectPro.length;i++){

        var selectvalue = document.querySelector("input:checked").value;

          count = selectvalue + count;

            //var count = parseInt(selectPro[i].value)+count;

        console.log(count);

      }

    document.querySelector("#resultSpan").value=count;

        }

原因:1.没有进行类型转换,是字符串字符串相加,结果是加长字符串。2.没有循环加结果,没有加【i】时的值,永远默认第一个

选中的值。

4.

发布了30 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_40898368/article/details/82667163