Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取未定义的属性$_Javascript_D3.js - Fatal编程技术网

Javascript 无法读取未定义的属性$

Javascript 无法读取未定义的属性$,javascript,d3.js,Javascript,D3.js,在g上调用此函数会生成一个无法读取的未定义错误属性'indexOf',在我尝试在此处添加标记为//的输入的行上。尽管我尽了最大努力,我还是找不到未定义的东西。我该如何解决这个问题 注意:它应该创建带有标签和存储函数的复选框 这是一个带有一点驱动程序代码的JSFIDLE 对不起,我刚发现一个不相关的错误。更新了代码 function CheckBoxFilter() { var labels = []; var functions = []; var updateData; f

在g上调用此函数会生成一个无法读取的未定义错误属性'indexOf',在我尝试在此处添加标记为//的输入的行上。尽管我尽了最大努力,我还是找不到未定义的东西。我该如何解决这个问题

注意:它应该创建带有标签和存储函数的复选框

这是一个带有一点驱动程序代码的JSFIDLE

对不起,我刚发现一个不相关的错误。更新了代码

function CheckBoxFilter() {
  var labels = [];
  var functions = [];

  var updateData;

  function chart(selection) {
    selection.each(function() {
      var g = d3.select(this).append("g");

      var checkboxes = g.selectAll("input")
        .data(labels)
        .enter()
        .append()   // HERE
        .attr("class", "checkbox")
        .attr("type", "checkbox")
        .property("checked", true)
        .text(function(d) {
          return " " + d.name;
        });

      updateData = function() {
        var update = checkboxes.data(data);

        update.exit()
          .remove();

        update.enter()
          .append("input")
          .merge(update)
          .attr("class", "checkbox")
          .attr("type", "checkbox")
          .text(function(d) {
            return " " + d.name;
          });
      };
    });
  }

    chart.data = function(value) {
        if (!arguments.length) return labels;
            labels = [];
        functions = [];

        var len = value.length;
        for (var i=0; i<len; i++) {
            labels.push(value[i].name);
            functions.push(value[i].func);
        }

        if (typeof updateData == "function") updateData();
            return chart;
        };

  return chart;
};
驱动程序代码

<html>
<head>
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
<body>
    <script>
        var svg = d3.select("body").append("svg");

        var age_filter = CheckBoxFilter().data(age);
        svg.call(age_filter);
    </script>
</body>
</html>

.append需要CSS选择器作为参数。在这种情况下,必须告诉它追加输入:.appendinput。

您可以发布此脚本附带的HTML吗?这是HTML。您没有向.append传递任何参数。您需要告诉它要追加什么:.appendinput。非常感谢。是的,很快我就发现了。
<html>
<head>
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
</head>
<body>
    <script>
        var svg = d3.select("body").append("svg");

        var age_filter = CheckBoxFilter().data(age);
        svg.call(age_filter);
    </script>
</body>
</html>