DAY10-DOM下


DOM属性的基本操作[掌握]

概念

什么是元素的属性?class就是元素的属性,写在元素内的所有东西都是元素的属性,比如link的href,img的src等

元素的属性是什么,分为两种,一种叫内置属性,一种叫非内置属性。

内置属性的操作(通过js)

属性含义
innerHTML/innerText返回值是当前元素的内容
id返回值是当前元素的ID
title获取title的标签值,这个title是从document中获取的
className返回值是当前元素的class名称
href返回值是当前的href的值

以上这些属性既可以获取,也可以设置!

例1:获取下列表单的节点的各种值,并且进行修改

       <div id="box" class="first" feng="admin">123</div>
		<a href="lunaxiede" title="这是a" target="_blank">zheshia</a>
		<img src="asd/asd/asdasdsa.jpg" alt="这是img的alt" title="这是图片"/>
		<input type="text" name="user" id="user" value="" />

js获取节点的写法

<!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>
</head>
<body>
    <div id="box" class="first" feng="admin">123</div>
    <a href="lunaxiede" title="这是a" target="_blank">zheshia</a>
    <img src="asd/asd/asdasdsa.jpg" alt="这是img的alt" title="这是图片"/>
    <input type="text" name="user" id="user" value="没有断奶的孩子" />
    <script>
 

     // 内置属性:就是标签自带的属性 如input的 type name class id 
    //  img的内置属性 src alt class id width height
    // 非内置属性(自定义属性): 人为在标签上设置的属性

    // div上属性的获取
    // var divObj = document.getElementById('box');
    // // id的获取
    // console.log(divObj.id)
    // // class的获取 className
    // console.log(divObj.className);
    // // 自定义属性的获取不能直接使用.
    // console.log(divObj.feng);
    // //console.log(divObj)
    // // div上属性的设置
    // // id的设置
    // divObj.id = 'latiao';
    // // class的设置
    // divObj.className = 'kissshao';


    // a标签属性的操作
//     var aObj = document.getElementsByTagName('a')[0];
//    // console.log(aObj)
//    // 获取title
//     console.log(aObj.title);
//     // href属性获取
//     console.log(aObj.href);
//     // target的获取
//     console.log(aObj.target);
//     // 设置a标签的href和title值
//     aObj.title = '哈哈,我是a';
//     aObj.href = 'http://www.baidu.com';

// 图片的属性获取设置
//    var imgObj = document.querySelector('img');
//    //console.log(imgObj)
//    // src的获取和设置
//    console.log(imgObj.src);
//    imgObj.src = '../images/8.jpg';

// input框属性的获取和设置
var inputObj = document.getElementById('user');
  //console.log(inputObj);
  // type和name属性的获取
  //console.log( inputObj.type);
  //console.log( inputObj.name);

  //value的获取和设置
  console.log( inputObj.value);
  inputObj.value = '长的白白胖胖';
    </script>
</body>
</html>

以上属性因为是标签固有的,所以可以直接使"."的方式调用.

非内置属性(自定义属性)

setAttribute(name,value)

描述:给指定对象设置属性名和属性值

参数:name指属性名,value指属性值

例如:divObj.setAttribute(‘one’,1);

obox.setAttribute("a","110")
obox.setAttribute("feng","root")

脚下留心:

这里添加的属性都增加到了.标签上!

getAttribute(name)

描述:获取指定对象的属性名的属性值

返回:属性值

     console.log(obox.feng)   // 获取不到值
	 console.log(obox.getAttribute("feng"))
removeAttribute(name)

描述:移除指定对象的属性

obox.removeAttribute("a")

例1:移除p中自定义的属性

<p goodsId='25'>因噎废食 </p>

自定义数据属性

H5中规定的非标准属性指定方式,但是必须用**data-**前缀告诉浏览器,data-后面跟什么都行.

<div id="app" data-myname='jack' data-appId="12345">
 访问方式
 div.dataset.myname

名称如 data-my-name,data-My-Name同过myName来访问.data-myname,data-myName通过**+**访问

节点公共的属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wZNoFk2e-1662464042065)(/1564713467244.png)]

 父节点.firstChild:返回第一个子节点,包含空白节点(文本节点)
       .firstElementChild:返回第一个子节点
 父节点.lastChild:返回最后一个子节点(包含空白)
        lastElementChild  返回最后一个子节点(不包含空白)
nextSibling属性返回元素节点之后的兄弟节点(包括文本节点、注释节点即回车、换行、空格、文本等等)

nextElementSibling属性只返回元素节点之后的兄弟元素节点(不包括文本节点、注释节点)(IE7/8不支持)

previousSibling 属性返回元素节点之前的兄弟节点(包括文本节点、注释节点);
previousElementSibling 属性只返回元素节点之前的兄弟元素节点(不包括文本节点、注释节点),只读属性;(IE7/8不支持)
childNodes:返回子节点列表(包括,文本节点,注释节点),返回时一个组数
children: 只返回标签元素节点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Z4ic66Y-1662464042066)(/1568035755261.png)]

节点
parentNode:返回父节点
其他
nodeName:返回节点名字

例1:获取文本节点

<!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>
</head>
<body>
    <h3>过春节了</h3>
    <ul>
        <li>饺子</li>
        <li>油条</li>
        <li>炸鱼块</li>
        <li>麻叶</li>
    </ul>
   <p>小酒一顿,又斗地主,只剩内裤</p>

    <script>
    var ulObj = document.querySelector('ul')
      //第一个 子节点的获取
      // #text 表示文本节点,其实是空白
      var li1 = ulObj.firstChild; // 包含空白节点
       //   console.log(li1)
      var li2 = ulObj.firstElementChild; // 返回元素节点,不包含空白
       //   console.log(li2)

    // 最后一个子节点的获取
    var li3 = ulObj.lastChild;  // #text  空白节点
       // console.log(li3)
       li4 = ulObj.lastElementChild; // 返回最后一个标签节点,不包含空白
      // console.log(li4)
    
    // 下一个兄弟节点
    var p1 = ulObj.nextSibling;// #text  空白节点
   // console.log(p1)
   var p2 = ulObj.nextElementSibling; // 返回最后一个标签节点,不包含空白节点
    // console.log(p2)

    // 上一个兄弟节点
    var h3Obj1 = ulObj.previousSibling; // #text  空白节点
     //  console.log(h3Obj1);
    var h3Obj2 = ulObj.previousElementSibling; // 返回最后一个标签节点,不包含空白节点
   // console.log(h3Obj2)

   //父节点的返回
   var parObj = ulObj.parentNode; 
  // console.log(parObj)

   //节点名字的返回,注意是大写
   var name = ulObj.nodeName;
  // console.log(name);

  // 获取所有的子节点
   var chil1 = ulObj.childNodes; // 包含空白节点
  // console.log(chil1)
   var chil2 = ulObj.children; // 返回所有的表签元素子节点
   console.log(chil2)
   // 中午每人一块鱼
   console.log(chil2[2]);

 var pObj = ulObj.nextElementSibling;
 console.log(pObj.innerHTML); // 获取标签在内的所有内容
 console.log(pObj.innerText)
// 设置时,会替换原来的内容
//pObj.innerHTML = '<b>这是加粗的</b>'; // 可以设置html标签
pObj.innerText =pObj.innerText+ '<b>这是加粗的</b>';  // 会把标签当做普通的文本
    
  // console.log(pp.nodeValue)
    </script>
</body>
</html>

特殊集合

document 中还有几个特殊的集合,可以快速的访问文档中的公共部分

获取a标签

document.anchors 获取文档所有带name的a元素

document.links 获取所有带href属性的a元素

  <a href="" name="test">测试</a>
  <a href="" name="user">测试</a>
  
   let aObjs = document.anchors;
   console.log(aObjs);
获取form元素

document.forms 获取页面中所有的form元素

  <form action="" method="get">
    user
    <input type="text"> pwd
    <input type="text">

  </form>
  
  console.log(document.forms[1]);

获取img元素

document.img 获取所有的img元素

 <img src="" alt="">
 console.log(document.images);

练习

隔行变色

<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			.active{
			    background: #ccc;
			}
		</style>
	</head>
	<body>
		<ul>
			<li>link1</li>
			<li>link2</li>
			<li>link3</li>
			<li>link4</li>
			<li>link5</li>
		</ul>
	</body>
	<script type="text/javascript">
		var ali = document.querySelectorAll("li")
		
		for(var i=0;i<ali.length;i++){
			if(i%2 == 0){
				ali[i].className = "active";
			}
		}
		
	</script>
</html>

进度条

<html>

<head>
  <meta charset="UTF-8">
  <title></title>
  <style type="text/css">
    #box {
      width: 400px;
      height: 300px;
      position: relative;
      border: solid 1px black;
      margin: 50px auto;
    }

    .bar {
      width: 0px;
      height: 30px;
      background: green;
      border-radius: 6px;
      position: absolute;
      top: 135px;
      line-height: 30px;
      text-align: center;
      color: #fff;
    }
  </style>
</head>

<body>
  <div id="box">
    <div class="bar">
      <span>0%</span>
    </div>
  </div>
  <button onclick="fn()">开始</button>
</body>
<script type="text/javascript">
  // 1 获取节点
  var barObj = document.querySelector('.bar');
  var spanObj = barObj.firstElementChild;

  // 2 设置变量
  var times = '';  // 定时器返回值
  var target = 400;
  var speed = 10; // 步进值
  var tmpW = 0;

  function fn() {
    times = setInterval(function () {
      // 3增加步进值
      tmpW += speed;
      // 4 判断是否达到目标值
      if (tmpW >= target) {
        // 5 清空定时器,且设置到终点
        clearInterval(times);
        barObj.style.width = target + 'px';
        spanObj.innerHTML = '100%';
      } else {
        //设置百分比
        spanObj.innerHTML = parseInt((tmpW / target) * 100) + '%';
        barObj.style.width = tmpW + 'px';

      }
    }, 30)
  }



</script>

</html>

节点的操作

节点创建[理解]

元素节点:document.createElement(tag标签名称);

文本节点:document.createTextNode(文本内容);

自定义属性设置:node.setAttribute(名称,值);

节点追加[理解]

父节点.appendChild(子节点); // 向父节点添加最后一个子节点

父节点.insertBefore(newnode,oldnode); // 将newnode放到oldnode的前边,将节点放到指定的位置

 <div id="far">
      <div id="one"></div>
  </div>
  <div id="two"></div>

  //js
  var far = document.getElementById('far');
  var one = document.getElementById('one');
  var two = document.getElementById('two');
  far.insertBefore(two,one)

  //js执行之后的效果
  <div id="far">
      <div id="two"></div>
      <div id="one"></div>
  </div>
  //insertBefore是插入到参考节点之前,也有剪切的效果
节点删除[理解]

父节点.removeChild(子节点);

父节点.remove(); 删除自身

实现对元素的增删改查

//html
<div id="far">
     <div id="son"></div>
</div>

//js
var far = document.getElementById('far');
var son = document.getElementById('son');
var result = far.removeChild(son);
console.log(result);  //<div id="son"></div>

//js执行之后的效果
<div id="far">
</div>
节点的克隆

cloneNode() 克隆节点

**语法: **element.cloneNode([true]) ;

参数是boolean值,不传参数默认是false,为浅拷贝.传true,则是深拷贝

//html
<div id="box">
    div里面的内容
	<p>p元素</p>
</div>

//js
var box = document.getElementById('box');
console.log(box.cloneNode()); //<div id="box"></div>

console.log(box.cloneNode(true)) //<div id="box">  div里面的内容 <p>p元素</p> </div>
节点替换

replaceChild() 替换节点使用其他节点替换掉自己的某个子节点

**语法: **element.replaceChild(替换的节点, 被替换的子节点);

<div id="far">
    <div id="one"></div>
</div>
<div id="two"></div>

//js
var far = document.getElementById('far');
var one = document.getElementById('one');
var two = document.getElementById('two');
far.replaceChild(two,one);

//js执行之后的效果
<div id="far">
    <div id="two"></div>
</div>

CSS DOM(扩展)

功能:使js可以动态给HTML添加css样式属性 (行内样式)

语法:对象名.style.CSS属性转化为js后的名称 = 属性值;

例如:

color:red;

obj.style.color = ‘red’;

obj.style.background = ‘red url()’

background-image:url()

obj.style.backgroundImage = ''url();

font-size:10

obj.style.fontSize = ;

【CSS属性转化为js后的名称规则】

1、一个单词直接写,如:color,background,margin,width,height
2、多个单词,第二个单词去掉“-”并且“首字母大写”:

font-size => fontSize

font-family => fontFamily

border-width => borderWidth

案例:点击改变盒子的样式和内容

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
         #box{
             width: 200px;
             height: 200px;
          
             background-color: pink;
         }
    </style>
</head>
<body>
	
    <div id="box">内容部分</div>
    
    <button id="btn1">改变宽度</button>
    <button id="btn2">改变高度</button>
    <button id="btn3">改变颜色</button>
    <button id="btn4">改变内容</button>

	<script>
     // 1 获取节点
     var btn1Obj = document.querySelector('#btn1');
     var boxObj = document.querySelector('#box');
     // 2 绑定点击事件
         btn1Obj.onclick = function(){
             // 3 修改box的css的width
             boxObj.style.width = '400px';
         }
    
    // 高度的改变
    var btn2Obj = document.querySelector('#btn2');
        btn2Obj.onclick = function(){
            // 修改高度
            boxObj.style.height = '400px';
        }

    // 颜色的修改
    var btn3Obj = document.querySelector('#btn3');
        btn3Obj.onclick = function(){
            // 修改高度
            boxObj.style.backgroundColor = 'yellow';
        }

            // 内容的修改
    var btn4Obj = document.querySelector('#btn4');
        btn4Obj.onclick = function(){
            // 修改高度
            boxObj.innerHTML = '朝闻道,夕死可矣';
        }
    </script>
</body>
</html>

脚下留心

1  通过js操作css样式时,一定要加px
  boxObj.style.width = '400px';
  
2 通过js添加的样式都会以行内样式的方式追加
非行内样式的获取

现象

.test{
   height:200px;
}

<div style="width:200px" class="test" id="id">asd</div>

在这个例子如果我们用 obj.style.height获取的数值将会为空,

a)在ie浏览器里,我们用到obj的currentStyle方法,来获取。 obj.currentStyle["height"]。

b)在非ie浏览器里,我们需要用到window自带的方法,getComputedStyle(obj).height;

这样我们就可以通过js获取元素属性了

综合写法:

    获取非行内样式(兼容问题)

    function getStyle(obj,attr){             //获取非行间样式,obj是对象,attr是值
        if(obj.currentStyle){                //针对ie获取非行间样式
            return obj.currentStyle[attr];
        }else{
            return getComputedStyle(obj,false)[attr];   //针对非ie
        };
    };
浏览器元素的尺寸[掌握]
offsetParent:获取元素的最近的具有定位属性(absolute或者relative)的父级元素。如果都没有则返回body
                          (与当前元素最近的经过定位(position不等于static)的父级元素)

offsetLeft:表示元素的左外边框至offsetParent元素的左内边框之间的像素距离
2
offsetTop:表示元素的上外边框至offsetParent元素的上内边框之间的像素距离
clientWidth/clientHeight:元素视窗宽度/高度
 clientWidth = width+左右padding
 clientHeight = height + 上下padding 
offsetWidth/offsetHeight:元素实际宽度/高度
   offsetWidth = width + 左右padding + 左右boder
   offsetHeiht = height + 上下padding + 上下boder

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wOtTHzJs-1662464042067)(/1560692509866.png)]

例题

<!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>
    <style>
    #box{
        width: 200px;
        height: 100px;
        background: red;
        position: absolute;
        top:40px;
        left:40px;
        padding: 20px;
        border: solid 10px black;

        }
    </style>
</head>
<body>
    <div id="box"></div>
    <script>
     var divObj = document.querySelector('#box')
     // 获取最近具有定位属性的父级元素
    // var par = divObj.offsetParent;
   //  console.log(par)
    
    // 获取元素到父级元素的top值
   // console.log(divObj);
    var tops = divObj.offsetTop;
    //console.log(tops)

    // 获取元素左外边框到父级元素的left值
    var left = divObj.offsetLeft;
    //console.log(left);

    // 获取元素的clientWidth
    // clientWidth = width+左右padding
    var cw = divObj.clientWidth;
    //console.log(cw);
    // 获取元素的可视高度
    // clientHeight = height+上下padding
    var ch = divObj.clientHeight;
   // console.log(ch);

    // 获取元素的完全宽度
    // offsetWidth = width+左右padding+左右border
    var sw = divObj.offsetWidth;
    console.log(sw);
    // offsetHeight = height+上下padding+上下border
    // 获取元素的完全高度
    var sh = divObj.offsetHeight;
    console.log(sh);
    </script>
</body>
</html>

扩展

DOM 中的表单元素的属性

  • value 用于大部分表单元素的内容获取(option除外)
  • type 可以获取input标签的类型(输入框或复选框等)
  • disabled 禁用属性
  • checked 复选框选中属性
  • selected 下拉菜单选中属性
代码的实现
<body>
<input type="text" value="123" >
<input type="button" value="按钮" >
<script>
//  value
  var input = document.querySelector('input');
  var btn = document.querySelectorAll('input')[1];
//console.log(input.value);
//  input.value = '456';
  
  //type
//console.log(input.type);
//console.log(btn.type);
//
//  input.type = 'button';
//  btn.type = 'text';
  
  //disabled  禁用
//    在html中只需要写属性名的属性,在js中通过true/false来控制
//    如果赋值为true,就是相当于写了这个属性
//    如果赋值为false,就是相当于没写这个属性
//  btn.onclick = function(){
//    input.disabled = false;
//  }
//
//console.log(input.disabled);
</script>
</body>
案例 :
  • 全选反选
<!DOCTYPE html>
<html>

<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .wrap {
            width: 300px;
            margin: 100px auto 0;
        }

        table {
            border-collapse: collapse;
            border-spacing: 0;
            border: 1px solid #c0c0c0;
            width: 300px;
        }

        th,
        td {
            border: 1px solid #d0d0d0;
            color: #404060;
            padding: 10px;
        }

        th {
            background-color: #09c;
            font: bold 16px "微软雅黑";
            color: #fff;
        }

        td {
            font: 14px "微软雅黑";
        }

        tbody tr {
            background-color: #f0f0f0;
        }

        tbody tr:hover {
            cursor: pointer;
            background-color: #fafafa;
        }
    </style>
</head>

<body>
    <div class="wrap">
        <table>
            <thead>
                <tr>
                    <th>
                        <input type="checkbox" id="j_cbAll" />
                    </th>
                    <th>商品</th>
                    <th>价钱</th>
                </tr>
            </thead>
            <tbody id="j_tb">
                <tr>
                    <td>
                        <input type="checkbox" />
                    </td>
                    <td>iPhone8</td>
                    <td>8000</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" />
                    </td>
                    <td>iPad Pro</td>
                    <td>5000</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" />
                    </td>
                    <td>iPad Air</td>
                    <td>2000</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" />
                    </td>
                    <td>Apple Watch</td>
                    <td>2000</td>
                </tr>

            </tbody>
        </table>
        <input type="button" value="  反 选  " id="btn">
    </div>

    <script>
//        需求:
//        1. 全选选中,下面的复选框都选中,否则,下面的都不选中
//            1.1 获取元素
                var j_cbAll = document.getElementById('j_cbAll');
                var j_tb = document.getElementById('j_tb');
                var cbs = j_tb.getElementsByTagName('input');
//            1.2 点击全选的时候,全选的状态变成了什么样
                j_cbAll.onclick = function(){
//                    console.log(this.checked);
//                    1.3 根据全选的状态啊,给下面四个赋值
                   
//                      if(this.checked){
//                          //如果是true
//                          for(var i = 0; i < cbs.length; i++) {
//                              cbs[i].checked = true;
//                          }
//                      }else{
//                          //证明全选没选中
//                          for(var i = 0; i < cbs.length; i++) {
//                              cbs[i].checked = false;
//                          }
//                      }
    
//                    if(this.checked){
//                        //如果是true
//                        for(var i = 0; i < cbs.length; i++) {
//                            cbs[i].checked = this.checked;
//                        }
//                    }else{
//                        //证明全选没选中
//                        for(var i = 0; i < cbs.length; i++) {
//                            cbs[i].checked = this.checked;
//                        }
//                    }
    
                    for(var i = 0; i < cbs.length; i++) {
                        cbs[i].checked = this.checked;
                    }
                   
                }
//
//        2. 下面每一个选中,或者不选中的时候,都应该判断一下,是否下面都选中, 如果都选中了,全选也选中,如果有一个没选中,全选不选中
//            2.1 获取元素
//            2.2 给下面的每一个复选框注册点击事件
                for(var i = 0; i < cbs.length; i++) {
                  cbs[i].onclick = cbClick;//这样写可以节省内存
                }
                //下面的复选框点击时触发的事件
//               判断当前四个复选框是否都选中,如果都选中,就让全选也选中,否则,全选不选中
                function cbClick(){
                    //2.3 判断下面四个是否都选中,如果选中,全选选中,如果有没选中的,全选不选中
                    var flag = true;//先假设四个都是选中的
                    for(var i = 0; i < cbs.length; i++) {
                        //判断有没有未选中的
                      if(cbs[i].checked == false){
                          //证明有没选中的
//                          如果有没选中的就将flag修改为false
                          flag = false;
                      }
                    }
                    //当for循环执行完了之后,就可以通过flag判断是否都选中了
//                    如果flag是true,证明都选中了,否则,有未选中的
//                    2.4 根据flag的状态,给全选赋值
//                    if(flag){
//                        j_cbAll.checked = true;
//                    }else{
//                        j_cbAll.checked = false;
//                    }
    
//                    if(flag){
//                        j_cbAll.checked = flag;
//                    }else{
//                        j_cbAll.checked = flag;
//                    }
                        j_cbAll.checked = flag;
                }

                  
//        3. 点击反选按钮下面这个四个复选框,取反他们的状态. 取反之后,判断四个复选框的状态,如果都选中,全选也选中,否则,全选不选中
        
//        3.1 获取元素
          var btn = document.getElementById('btn');
//        3.2 给反选按钮注册点击事件
            btn.onclick = function(){
                //   3.3 在事件 处理函数中,给下面四个取反, 取反之后,判断4个复选框的状态,修改全选的状态
//                3.3.1 取反四个复选框
                    for(var i = 0; i < cbs.length; i++) {
//                      if(cbs[i].checked){
//                          //能够进来,证明是选中,应该取消
//                          cbs[i].checked = false;
//                      }else{
//                          //证明原本是取消的状态
//                          cbs[i].checked = true;
//                      }
//                        if(cbs[i].checked){
//                            //能够进来,证明是选中,应该取消
//                            cbs[i].checked = !cbs[i].checked;
//                        }else{
//                            //证明原本是取消的状态
//                            cbs[i].checked = !cbs[i].checked;
//                        }
    
                        cbs[i].checked = !cbs[i].checked;
                    }
//                3.3.2 取反之后,根据他们的状态,修改全选的状态
                    cbClick();
            }
            

    </script>
</body>

</html>

nclick = function(){
// 3.3 在事件 处理函数中,给下面四个取反, 取反之后,判断4个复选框的状态,修改全选的状态
// 3.3.1 取反四个复选框
for(var i = 0; i < cbs.length; i++) {
// if(cbs[i].checked){
// //能够进来,证明是选中,应该取消
// cbs[i].checked = false;
// }else{
// //证明原本是取消的状态
// cbs[i].checked = true;
// }
// if(cbs[i].checked){
// //能够进来,证明是选中,应该取消
// cbs[i].checked = !cbs[i].checked;
// }else{
// //证明原本是取消的状态
// cbs[i].checked = !cbs[i].checked;
// }

                    cbs[i].checked = !cbs[i].checked;
                }

// 3.3.2 取反之后,根据他们的状态,修改全选的状态
cbClick();
}

</script>



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值