无法读取未定义

时间:2017-04-25 03:50:31

标签: javascript d3.js

在g上调用此函数会在我尝试追加输入的行(标记为// HERE)上生成“无法读取属性'indexOf'未定义”错误。尝试我可能无法找到未定义的地方。我该如何解决这个问题?

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

这是一个带有一点驱动程序代码的jsfiddle。 http://jsfiddle.net/hevans1/huxe8ros/13/

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

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;
};

示例数据。

var age = [{
  name: "0-5",
  func: function(datum, checked) {
    return datum.age == "0-5" && checked == true;
  }
}, {
  name: "6-10",
  func: function(datum, checked) {
    return datum.age == "6-10" && checked == true;
  }
}, {
  name: "11-15",
  func: function(datum, checked) {
    return datum.age == "11-15" && checked == true;
  }
}, {
  name: "16-20",
  func: function(datum, checked) {
    return datum.age == "16-20" && checked == true;
  }
}, {
  name: "21-25",
  func: function(datum, checked) {
    return datum.age == "21-25" && checked == true;
  }
}, {
  name: "26-30",
  func: function(datum, checked) {
    return datum.age == "26-30" && checked == true;
  }
}, {
  name: "30+",
  func: function(datum, checked) {
    return datum.age == "31+" && checked == true;
  }
}, ];

驱动程序代码

<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>

1 个答案:

答案 0 :(得分:0)

let getToken = function() { return $('meta[name=csrf-token]').attr('content') } function approveLogin(url){ let data = { '_token': getToken() } $.ajax({ 'url': url, 'method': 'POST', 'data': data, }).done(function(response) { //window.location.reload() }) } 需要CSS选择器作为参数。在这种情况下,必须告诉它添加输入: public function approve($user_id) { $user = User::find($user_id); $user->update(['loginapproval'=>'1']); return "ok"; }