• 浅谈for/in与 HTMLCollection


    1 理解for/in

    for/in只遍历对象的可枚举属性。

    同时,数组也是对象,所以for/in可以用来遍历数组。

    只是当我们定义的是一个普通数组,即key为数字,此时数组的属性就是数字,因此for/in返回的属性值也就是数字。

    想要获得数组中每个元素的值,还需要通过array[key]获得,下面将介绍一种直接获得的方法。

    举个例子

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>array-for-in</title>
    </head>
    <body>
        <script type="text/javascript">
    
        var array = ["tom",'jerry','coco'];
    
        for( element in array){
            alert(element); //返回 0,1,2
        }
    
        </script>
    </body>
    </html>

    2 理解HTMLCellection

    HTMLCollection是HTML元素的集合,虽然它也是对象(typeof可以测试),但是集合是没有key-value对的,所以不能使用for/in遍历HTMLCollec。

    NodeList同理。

    如果强行使用for/in,会返回HTMLCollection长度两倍的undefined(为什么是两倍笔者现在也不知道,有知道的麻烦告知)

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>HTMLColletion</title>
    </head>
    <body>
    
        <div>test div1</div>
        <div>test div2</div>
        <div>test div3</div>
    
    
        <script type="text/javascript">
    
            var divs = document.getElementsByTagName("div");
    
            for(div in divs){
                alert(div.innerHTML);
            }
    
    
        </script>
    
    </body>
    </html>

    正确姿势,可遍历到HTMLCollection中的每一个元素

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>HTMLColletion</title>
    </head>
    <body>
    
        <div>test div1</div>
        <div>test div2</div>
        <div>test div3</div>
    
    
        <script type="text/javascript">
    
            var divs = document.getElementsByTagName("div");
    
    
            for(var i=0;i<divs.length;i++){
                alert(divs[i].innerHTML);
            }
    
    
        </script>
    
    </body>
    </html>

    3 如何方便遍历数组

    使用数组自带的foreach方法

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>foreach</title>
    </head>
    <body>
    
        <div>test div1</div>
        <div>test div2</div>
        <div>test div3</div>
    
    
        <script type="text/javascript">
    
            var array = ["kerita","john","dorsun"];
    
            array.forEach( function(element, index) {
                window.alert(element);
            });
    
        </script>
    
    </body>
    </html>

    HTMLCollection利用对象冒充也可以使用这种方法。

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>HTMLColletion</title>
    </head>
    <body>
    
        <div>test div1</div>
        <div>test div2</div>
        <div>test div3</div>
    
    
        <script type="text/javascript">
    
            var divs = document.getElementsByTagName("div");
    
            [].forEach.call(divs,function(element){
                alert(element.innerHTML);
            });
    
        </script>
    
    </body>
    </html>
  • 相关阅读:
    JVM笔记3-java内存区域之运行时常量池
    JVM笔记2-Java虚拟机内存管理简介
    JVM笔记1-内存溢出分析问题与解决
    ActiveMq笔记1-消息可靠性理论
    python基础学习16----模块
    python基础学习15----异常处理
    在windows下搭建汇编编程环境
    python基础学习14----正则表达式
    python基础学习13----生成器&迭代器
    python基础学习12----装饰器
  • 原文地址:https://www.cnblogs.com/kerita/p/5351651.html
Copyright © 2020-2023  润新知