Javascript for循环Uncaught TypeError来自数据属性

时间:2016-06-26 22:05:14

标签: javascript loops d3.js

我有一些数据集附加到某些跨度,我试图循环但仍然收到错误:dials.js:238 Uncaught TypeError: Cannot read property 'percentages' of undefined

我的跨度结构如下:

<span class="dial rent"
      data-name="Rent"
      data-value="56"
      data-marker="40"
      data-min="0"
      data-max="100"
      data-percentages="0.25, 1">
    </span>

我的JS是:

var dials = document.getElementsByClassName('dial');

function createGauges() {
  for (var key in dials) {
    var data = dials[key].dataset;
    var percent = data.percentages.split(',').map(Number);
    console.log(percent);
    newDial(data.name, data.value, data.marker, data.min, data.max, percent);
  }
}

我的数据输出结构如下所示:

DOMStringMap {name: "Cost of goods", value: "23", marker: "20", min: "0", max: "100"…}
marker:"20"
max:"100"
min:"0"
name:"Cost of goods"
percentages:"0.3, 1"
value:"23"

我很难过。当我记录percent变量时,我正在获取正确的数据并将其输出到我的D3图表。但是JS错误输出并终止,因此剩下的数据不会填充。

1 个答案:

答案 0 :(得分:3)

实际上for循环遍历对象的键。在你的情况下,for循环遍历["0", "length", "item", "namedItem"]的{​​{1}}个键。所以只有有效的是dials。看看钥匙

0