自定义属性和索引值

循环结构

for-in 循环

  • 用来循环对象,因为对象没有长度没有顺序,所以不可以用for循环

  • 语句:创建一个对象

    ​ for(定义一个变量 变量名 in 对象名){}

  • 现总结一下获取对象属性值的方法

    • <script>
      var json {
      	"name":"lizheng",
      	"sex":"男",
      	"age":8888
      }
      console.log(json.name); //第一种获取方法
      console.log(json['age']); //第二种获取方法
      </script>
      
  • 循环对象

    • <script>
      	var json {
      	"name":"lizheng",
      	"sex":"男",
      	"age":8888
      	}
          for(var x in json){
          	console.log(x);
              console.log(json[x]);//因为x是变量,所以不再需要加中括号
              console.log(json.x);//这个是取不出来值得,循环里面不可以用
          }
      </script>
      

while

  • 先循环后判断,和for循环差不多,就是初始化变量位置放置有时候不一样

  • for循环步骤

  • 方法一:
    for(1.初始化循环变量;2.循环是否继续的条件;4.更新循环变量){
    	3.执行的代码
    }
    方法二:
    1.初始化循环变量;
    for(;2循环是否继续的条件;){
    	3.执行的代码
    	4.更新循环变量
    }
    
  • while循环的语法只是第二种,不可以移进

  • 1.初始化循环变量;
    while(2循环是否继续的条件){
    	3.执行的代码
    	4.更新循环变量
    }
    eg:
    var x=0;
    while(x<=10){
                 console.log(x);
                 x++;
                 }
    

do-while

  • 特点:现执行再判断,不管条件是否成立,至少执行一次

  • 语法:

  • 1.变量初始值
    do {
    	2.执行的代码;
    	3.更新变量
    }while(4.判断条件)
    eg:
    var x=0;
    do{
    	console.log(x);
    	x++;
    }while(x<=5);
    
  • 他和while、for的区别就是,当第一次条件不成立时,do-while会执行一席,for和while不会执行

终止循环的两种方法

break

  • 跳出循环,是结束整个循环

continue

  • 跳出本次循环,是结束次次循环后面的代码,执行下一次循环
var x=0;
for(;x<=10;x++){
	if(x%2==0){
    	console.log(x);   //0第一个数值就满足这个条件,后面是break,所以整个循环直接结束,结果是0
        break;
	}
 }
                
eg:
 var x=0;
for(;x<=10;x++){
	if(x%2==0){
    	console.log(x);  //0、2、4、6、8、10
					    //后面是continue,还可以继续执行下面的代码
        continue;
	}
 }
this
  • console.log(this);   //这里控制台输出的是this
    
  • 为什么要用this呢?

  • <ul>
     <li>1</li>
     <li>12</li>
     <li>123</li>
    </ul>
    <scritp>
        var lii=document.getElementsByTagName('li');
            for(var i=0;i<lii.length;i++){
                console.log(i);   //3
                lii[i].οnclick=function(){
                    console.log(lii[i].innerHTML);
                }
            }
    </scritp>
    
  • 上面会报错
    在这里插入图片描述

  • 原因:for循环中,最后i是为3的,因为当i=2时,再执行一次循环,然后i++,而下标是索引值,是从0开始的,只有0,1,2,所以是到不了3的,所以会报错

  • this指的是触发当前事件的对象,事件中,那个对象触发了事件则this就是谁,上面的错误可以改

  • <scritp>
        var lii=document.getElementsByTagName('li');
            for(var i=0;i<lii.length;i++){
                console.log(i);   //3
                lii[i].οnclick=function(){
                    //console.log(lii[i].innerHTML);
                    console.log(this.innerHTML);
                }
            }
    </scritp>
    
  • 事件中,触发谁this指向谁

自定义属性
  • 自定义属性就是给标签添加已有属性之外的属性

  • <div class="box" id="box" tag="123"></div>   //在标签里添加了一个自定义属性tag
    <script>
        var idd=document.getElementById('box');
    	console.log(idd.tag);
        //在这里,自定义的属性在控制台是取不到的
        //需要在js中自定义属性
        idd.tlag=true;
        console.log(idd.tlag);   //true
    </script>
    /*
    自定义属性就相当于给对象添加了一个值
    var div{
    	"id":"box",
    	"class":"box"
    }
    再给他加一个值,不就是:div.tlag=true;
    */
    
  • 自定义属性就相当于给对象添加了一个值

自定义索引值
  • 索引一般用于下标一一对应

  • //自定义索引值
    变量1[i].index=i;
    //赋值给需要和他有链接的变量
    变量2[this.index]...后面要做的事情
    

表单中一个比较特殊的元素

CheckBox,一般用于购物车,全选全不选
  • 直接放代码吧,有不会的再说

  • <body>
        <h2>爱好</h2>
        <label>睡觉<input type="checkbox" checked></label>
        <label>吃饭<input type="checkbox" checked></label>
        <label>打李峥<input type="checkbox"></label>
        <label>睡觉<input type="checkbox"></label>
        <label>睡觉<input type="checkbox"></label>
        <label>睡觉<input type="checkbox"></label>
        <label>睡觉<input type="checkbox"></label>
        <br>
        <br>
        <button>全选</button>
        <button>反选</button>
        <button>重置</button>
        <script>
            var inp=document.querySelectorAll('input');
            console.log(inp[0].checked);//true
            var btn=document.querySelectorAll('button');
            btn[0].onclick=function(){
                for(var i=0;i<inp.length;i++){
                    inp[i].checked='checked';
                }
            }
            btn[2].onclick=function(){
                for(var i=0;i<inp.length;i++){
                    inp[i].checked='';
                }
            }
            btn[1].onclick=function(){
                for(var i=0;i<inp.length;i++){
                    if(inp[i].checked == true){
                        inp[i].checked='';
                    }else if(inp[i].checked == false){
                        inp[i].checked='checked';
                    }
                }
            }
        </script>
    </body>
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值