前端5js:Dom:全选全不选,省市级联,隔行/触摸换色,表单校验

Posted 码农编程录

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端5js:Dom:全选全不选,省市级联,隔行/触摸换色,表单校验相关的知识,希望对你有一定的参考价值。


1.Dom编程_查找节点:选择器

Dom作用:在.html文件里找标签,类似java中反射(一个类被加载进内存会自动生成class对象,通过这个class对象获取这个类中任何元素)。如下只有id是唯一的。
在这里插入图片描述

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>根据标签的属性找元素</title>
    <script type="text/javascript">        
       window.onload = function (ev) { //页面加载事件,ev参数是鼠标移动获取坐标
           var b2 = document.getElementById("b2");
           b2.onclick = function (ev2) {
               var array = document.getElementsByTagName("a");
               for(var i=0; i < array.length; i++){
                   array[i].href = "http://www.baidu.com"
               }
           }

//111111111111111111111111111111111111111111111111111111111111111111111111111111
           document.getElementById("b3").onclick = function (ev2) {
               var array = document.getElementsByName("one")
               for(var i=0; i < array.length; i++){
                   array[i].innerText = "嘻嘻"
               }
           }

//111111111111111111111111111111111111111111111111111111111111111111111111111111
           document.getElementById("b4").onclick = function (ev2) {
               var array = document.getElementsByClassName("two")
               for(var i=0; i < array.length; i++){
                   array[i].innerText = "嘻嘻2"
               }
           }
       }
    </script>
</head>

<!--111111111111111111111111111111111111111111111111111111111111111111111111111-->
<body>
    <input type="button" value="(通过标签名)给a链接添加地址" id="b2" />
    <input type="button" value="(通过name属性)给div设值" id="b3"/>
    <input type="button" value="(通过类名)给div设值" id="b4"/>
    <hr/>
    <a>传智播客</a><br/>
    <a>传智播客</a><br/>
    <a>传智播客</a><br/>
    <hr/>
    <div name="one"></div>
    <div name="one"></div>
    <div name="one"></div>
    <hr/>
    <div class="two"></div>
    <div class="two"></div>
    <div class="two"></div>
</body>
</html>

在这里插入图片描述

2.案例_全选全不选:商品选项勾选状态跟全选的勾选状态一致

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        *       1. 先获取全选按钮的勾选状态
        *          对象.checked = true/false (勾上为true,没勾上为false)
        *          畸形写法的属性 js = boolean。包括checked/selected/disabled/readonly...
        *
        *       2. 然后找到所有的商品项,遍历,修改商品项的勾选状态 = 上面的勾选状态
        */
        function selectAll() { // 全选/全不选
            var all = document.getElementById("all");   
            console.log(all.checked) // boolean : true /false  
                      
            var array = document.getElementsByName("item"); //item条目
            for(var i=0; i < array.length; i++){
                array[i].checked = all.checked
            }
        }

//111111111111111111111111111111111111111111111111111111111111111111111111111
        /*
        *  反选: 1. 然后找到所有的商品项
        *         2. 遍历,修改商品项的勾选状态  与 自身原状态 相反
        */
        function reverseSelect() {
            var array = document.getElementsByName("item");
            for(var i=0; i < array.length; i++){
                array[i].checked = !array[i].checked
            }
        }

//111111111111111111111111111111111111111111111111111111111111111111111111111
        /*
        *  结账: 1. 然后找到所有的商品项
        *        2. 遍历,如果 checked = true, 计入总账
        */
        function total() {
            var array = document.getElementsByName("item");
            var total = 0; //var total 没有初始值,undefined
            for(var i=0; i < array.length; i++){
                if(array[i].checked){                    
                    total += parseInt(array[i].value) //类型转换,网页获取默认是字符串进行拼接
                }
            }
            alert(total)
        }
    </script>
</head>

<!--11111111111111111111111111111111111111111111111111111111111111111111111111111111-->
<body>
    <h3>商品价格列表</h3>
    <input type="checkbox" name="item" value="1500" /> 山地自行车1500<br />
    <input type="checkbox" name="item" value="200" /> 时尚女装200<br />
    <input type="checkbox" name="item" value="3000" /> 笔记本电脑3000元<br />
    <input type="checkbox" name="item" value="800" /> 情侣手表800<br />
    <input type="checkbox" name="item" value="2000" /> 桑塔纳2000<br />
    <hr/>
    <input type="checkbox" id="all" onclick="selectAll()" />全选/全不选 &nbsp;
    <input type="button" id="reverse" onclick="reverseSelect()" value=" 反 选 "/>&nbsp;
    <input type="button" value=" 结 账 " onclick="total()" />&nbsp;<span id="result"></span>
</body>
</html>

在这里插入图片描述

3.属性_innerText和innerHTML:追加

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        *   innerText : 内部文本(开闭标签之间的文本内容)
        *   innerHTML : 内部超文本 (识别标签语法)
        */
        window.onload = function (ev) {
            var div = document.getElementById("mydiv");
            console.log(div.innerText)   // 哈哈
            // div.innerText = "嘻嘻"  // 修改   
                     
            // div.innerText = div.innerText + "嘻嘻" //如下简化
            // div.innerText += "嘻嘻"    // 追加

            // div.innerText += "<a href='#'>呼呼</a>" //纯文本
            div.innerHTML += "<a href='#'>呼呼</a>"  
        }
    </script>
</head>

<!--1111111111111111111111111111111111111111111111111111111111111111111111111111111111-->
<body>
        <div id="mydiv">
                哈哈
        </div>
</body>
</html>

在这里插入图片描述

4.案例_省市级联:0对应bj数组

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        /*
        *  省市级联 : 省的选项改变,市的选项也要跟着改变
        *   思路:
        *       1. 事件 : 省标签的onchange事件
        *           1. onclick  : 鼠标点击触发
        *           2. onchange : 当内容改变的时候触发
        *
        *       2. 执行逻辑
        *          1. 首先得有省对应的市区数据 (事先准备)
        *             java:map :  key="bj" value=bjArray
        *             js:没有map,把北京索引设为0。 bj : 0 -> bjArray
        *          2. 获取省选项的value值, 去cityArray找数据
        *          3. 拿到数据之后,遍历添加到 市选项那边
        */
        var bj = ["朝阳区","海淀区","石景山区"]
        var sh = ["航头区","黑马区","徐汇区"]
        var fj = ["福州市","厦门市","莆田市","三明市"]
        var js = ["宿迁市","淮安市","徐州市"]
        var cityArray = [bj,sh,fj,js] // 二维数组 List<List> : 双重for循环

        function selectCity() {
            var province = document.getElementById("provinceId");
            // console.log(province.value)  //0,1,2,3 //不需要找到<option>,找到<select>就行 ,默认选中那个代表当前value值             
            var array = cityArray[province.value] // 自动转换 // var array = cityArray[parseInt(province.value)]

            var city = document.getElementById("cityId");
            city.innerHTML = "<option value=''>‐‐请选择市‐‐</option>"   //重置 //坑: 每次重新选择之前,数据要清空
            for(var i=0; i< array.length; i++){  //如下 "+array[i]+" 拼接字符串
                city.innerHTML += "<option value=''>"+array[i]+"</option>"  //超文本追加
            }
        }
    </script>
</head>

<!--1111111111111111111111111111111111111111111111111111111111111111111111111111111111-->
<body>
    <select id="provinceId" onchange="selectCity()">
        <option>‐请选择‐</option>
        <option value="0">北京</option>
        <option value="1">上海</option>
        <option value="2">福建</option>
        <option value="3">江苏</option>
    </select>
    <select id="cityId">
        <option value="">‐‐请选择市‐‐</option>
       <!--  <option value="">南京市</option>
           <option value="">苏州市</option>   -->
    </select>
</body>
</html>

在这里插入图片描述

5.Dom编程_js修改css样式:.className

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .my{
            font-size: 40px;
            color: green;
        }
        .your{
            font-size: 60px;
            color: yellow;
        }
    </style>

<!--111111111111111111111111111111111111111111111111111111111111111111111111111111111-->
    <script>
        /*
        *   1. 直接修改 -> 行内样式
        *       a. js中,任何标签对象都有style属性,用于操作css
        *       b. 语法
        *           标签对象.style.css属性
        *           css属性命名: font-size -> fontSize (小驼峰)(“-”在js中是非法标识符)
        * 
        *   2. 类修改 -> 内部样式
        *       a. js中,任何标签对象都有className属性,用于操作css
        *       b. 语法
        *       标签对象.className = 类选择器名字
        */
        function method01() {   //修改行内样式,平级关系可修改
            var span1 = document.getElementById("span1");
            span1.style.fontSize = "50px"
            span1.style.color = "blue"
        }

        function method02() {  //修改内部样式
            var span2 = document.getElementById("span1"); //点击按钮2没效果,因为行内样式优先级高于内部样式
            // var span2 = document.getElementById("span2"); //点击按钮2有效果,同是内部样式,后设置覆盖前设置
            span2.className = "your"
        }
    </script>
</head>

<!--1111111111111111111111111111111111111111111111111111111111111111111111111111111-->
<body>
        <input type="button" value="按钮1" onclick="method01()">
        <input type="button" value="按钮2" onclick="method02()">
        <hr>
        <span id="span1" style="font-size: 30px;color: red">span</span> <br>
        <span id="span2" class="my">span</span> <br>   <!--调用my类选择器 -->
</body>
checkbox实现全选全不选

javascript实现复选框的全选全不选

全选全不选反选

JQ 全选全不选

jquery全选反选全不选代码

jquery全选全不选反选