• D3js中each与call使用区别


    D3js中each与call使用区别

    2019-01-10 14:31:35 骤逝 阅读数 504更多

    在对选集中的对象进行操作的时候,each和call都可以使用,通过如下代码具体分析他们使用的区别:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="../d3.min.js"></script>
        <style type="text/css">
            .red {
                background-color: red;
            }
    
            .box {
                height: 100px;
                 100px;
            }
    
            .blue {
                background-color: blue;
            }
        </style>
    </head>
    <body>
    <span id="eachSelect">
            <div></div>
            <div></div>
            <div></div>
            </span>
    
    <span id="callSelect">
            <div></div>
            <div></div>
            <div></div>
            </span>
    
    <script type="text/javascript">
    
        // 1-code
        d3.select("#eachSelect").selectAll("div")
            .attr("class", "red box")
            .each(function (d, i) {
                d3.select(this).append("h1").text(i);
            });
    
        // 2-code
        d3.select("#callSelect").selectAll("div")
            .attr("class", "blue box")
            .call(function (d, i) {
                d.append("h1").text(i);
                //this.append("h1").text(i);
            }, "1");
    
        // 3-code
    
        // d3.select("#callSelect").selectAll("div")
        //     .attr("class", "blue box")
        //     .call(function (d) {
        //         d.each(function (d, i) {
        //             d3.select(this).append("h1").text(i);
        //         });
        //     });
    
    
    </script>
    </body>
    </html>

    1.code中使用的each,可以看出来他的作用是对选集中的对象进行遍历操作,其中参数d为undefined,参数i为遍历元素的下标,this表示当前操作的对象;
    2.code中使用的call,可以看出来其中的d参数就是选集中的对象与this一样,d之后的参数由用户自定义传递;
    如果您使用了call也可以变通的实现each的操作过程,例如3-code的例子。

  • 相关阅读:
    js代码性能优化的几个方法
    BOM(浏览器对象模型)的一些内置对象总结
    js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
    ELF文件格式
    Python 语言之 map/reduce
    LeetCode
    快速排序
    网络问题诊断
    Notepad++ 用法技巧
    Python图形开发之PIL
  • 原文地址:https://www.cnblogs.com/grj001/p/12223680.html
Copyright © 2020-2023  润新知