js自定义属性和索引值(2019-06-27)

Posted didamehulayou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js自定义属性和索引值(2019-06-27)相关的知识,希望对你有一定的参考价值。

复习

  • 流程控制: 顺序结构\分支结构\循环结构

  • if语句

       1- if(条件)  条件成立执行的语句          
       2- if(条件)   条件成立执行的语句    else   条件不成立执行的语句     
       3- if(条件) ... else if( 条件 ) ...  .... else   ...   
    
    
  • switch语句

    • switch语句中变量和case之间是绝对比较 ,相当于 "==="
        var a = ‘1‘;
        swicth(a)  
            case 1 : 代码;break;
            case 2 : 代码;break;
            case 3 : 代码;break;
            ...
            default:代码;
        
    
  • for循环

        for(var i = 0; i < 10; i++)
            console.log(i);
        
        console.log(i); //10
    
        //遍历数组
        var ary = [2,3,4,5];
        for(var i = 0; i < ary.length; i++)
            console.log(ary[i]);
        
        //批量生成标签
        var str = ‘‘;
        for(var i = 0; i < 100; i++)
            str += ‘<div></div>‘;
        
    
  • 获取元素的方法

    • 1-var oBox = document.getElementById(‘box‘); // 单个元素(DOM对象)

          oBox.style.width = "100px";
          oBox.onclick = function()   
      
    • 2-var aDiv = document.getElementsByTagName(‘li‘);

          var aDiv = oBox.getElementsByTagName(‘li‘);
          // 类数组 [li,li,li]
          for(var i = 0; i < aDiv.length; i++ )
               aDiv[i].style.width = ‘100px‘;  
               aDiv[i].onclick = function()
      
                   this.style.width = "100px";
      
               
          
      
    • 3-var aDiv = document.getElementsByClassName(‘red‘);

  • 输出方式 1-alert(); 2-console.log(); console.dir(); //打印对象详细信息 3-document.write();
    - 在body标签里写入内容,只能操作body里面的内容 - 可以写入文本和标签 - 如果先执行js就会写在已有标签之前,如果后执行就是在body末尾添加 - 如果放在事件里面会覆盖body里面已有的内容

(一)循环

  • 1-while循环

        初始化循环变量;
        while(循环条件)
            循环体;
            更新循环变量;
        
    
  • 2-do-while

    • 和while的区别,当条件不满足时,do-while会执行一次
```
    初始化循环变量;
    do
        循环体;
        更新循环变量;
    while(循环条件);

```
- 3- continue :结束本轮循环,继续下一轮循环
- 4- break : 跳出整个循环

(二)for in 循环

  • 1- 对象操作

       var obj = 
            name:‘优就业‘,
            age:18,
            1:‘aaaa‘,
        ;
        //查看属性值
        console.log(obj.age);
        // 添加属性
        obj.city = "北京";
        console.log(obj);
        //修改已有的属性值
        obj.age = 19;
        console.log(obj);
        //删除属性
        delete obj.name;
        console.log(obj);
    
        //当对象属性名是数字时,需要 obj[数字]
        console.log(obj[1]);
    
       console.log( obj[‘age‘] );
       //如果属性名使用的是变量,也需要用obj[变量名]访问
       var a = ‘age‘;
       console.log(obj[a]); 
    
  • 2- for in循环

        for(var key in obj)
            //key是一个变量,代表的是对象的属性名
            //obj代表要遍历的对象
            //obj[key] 代表属性值
        
    
    • for in循环会优先按升序遍历数字属性,其他属性按定义的顺序遍历

(三) 事件里的this

  • 1-为什么事件里面需要用this?

        var aLi = document.getElementsByTagName(‘li‘); //[li,li,li]
        for(var i = 0; i < aLi.length; i++)
            aLi[i].onclick = function()
                console.log(i); 
                // 因为用户点击时,for循环早已执行完毕,i最终的值是3,再取i的时候永远是3,所以不能使用i
                // 在批量绑定事件的事件处理函数里面使用this代表触发事件的那个元素
                this.style.border = "1px solid black";  
            
        
    
    
  • 2- 怎么解决不能使用i的问题?

        for(var i = 0; i < aLi.length; i++)
            aLi[i].index = i;  //给每个li设置一个自定义属性index,用来存li的索引
            aLi[i].onclick = function()
                console.log(this.index); // 事件发生时通过this.index访问当前对象的索引值
            
        

以上是关于js自定义属性和索引值(2019-06-27)的主要内容,如果未能解决你的问题,请参考以下文章

JS自定义属性的运用

百度地图聚合功能自定义聚合文字

template.js可以删除吗

如何用js修改一个自定义的标签的属性值

[TimLinux] Python 自定义描述符

关于 Audio 自定义样式