Javascript IE(至少11)和Edge在d3.js中不识别.length属性
我正在为主要使用d3.js的网页构建一组“拨号盘”和菜单。在Chrome和Firefox中,一切都像想象的那样绘制,但IE11和Edge似乎存在一个问题,主要是弄清楚以下d.name.length属性:Javascript IE(至少11)和Edge在d3.js中不识别.length属性,javascript,internet-explorer,d3.js,Javascript,Internet Explorer,D3.js,我正在为主要使用d3.js的网页构建一组“拨号盘”和菜单。在Chrome和Firefox中,一切都像想象的那样绘制,但IE11和Edge似乎存在一个问题,主要是弄清楚以下d.name.length属性: function drawChart2(data2) { var arc2 = d3.arc() .outerRadius(chartHeight/1.4) .innerRadius(chartHeight/1.25) .padAngle(0.01); var hal
function drawChart2(data2) {
var arc2 = d3.arc()
.outerRadius(chartHeight/1.4)
.innerRadius(chartHeight/1.25)
.padAngle(0.01);
var halfPie = d3.pie()
.value(function(d) { return d.name.length; })
.startAngle(90 * (Math.PI/180))
.endAngle(Math.PI);
var rimG = rimChart.selectAll('g')
.remove()
.exit()
.data([data2])
.enter()
.append('g');
var block2 = rimG.selectAll('.rim')
.data(halfPie)
.enter()
.append('g')
.classed('rim', true);
这是动态创建“菜单”过程的一部分,其中插槽大小/宽度基于基础菜单(数据)项/文本长度,沿以下几行创建:
但是,我收到以下错误消息,例如在IE11下:
SCRIPT5007:无法获取属性“length”的值:对象为null或未定义
如果我硬编码一个长度值而不是使用d.name.length,同样的错误仍然存在,但现在似乎出现在d3.js本身:文件:d3.v4.min.js,行:5,列:5647,在以下代码中:
var a,c,s,f,l,h=t.length
现在我已经阅读了有关MS浏览器中长度属性的问题,但在这里无法真正指出问题所在。这是我这里的代码中的一个问题,还是d3.js与IE的兼容性问题,是否有一个合理的IE解决方案来获取d.name的length属性?您可以设置一个,即一个可执行的演示文件作为堆栈片段、JSFIDLE、Codepen或类似的东西吗?这里的d.name类型是什么?它是一个SVGLengthList吗?你能设置一个,例如,一个可执行的演示,作为堆栈片段、JSFiddle、Codepen或类似的东西吗?这里的d.name类型是什么?它是一个SVGLengthList吗?