2016-10-24 86 views
10

下面这段代码在IE 11不工作,它在控制台“箭头函数”在IE中不起作用,为什么?

g.selectAll(".mainBars").append("text").attr("x",d=>(d.part=="primary"? -40: 40)).attr("y",d=>+6).text(d=>d.key).attr("text-anchor",d=>(d.part=="primary"? "end": "start")); 

使用d3.js双边图表可视化

这个代码导致该问题在上面的语句抛出一个语法错误d=>(d.part=="primary"? -40: 40)

+9

IE11不支持匿名函数的箭头符号。把它重写为'function(d){return d.part ==“primary”? -40:40; }'。 – Phylogenesis

+0

@Phylogenesis:并非所有的箭头函数都是匿名的。例如:这个不是,例如:'var f =()=>“foo”;' –

+0

请参阅[这里为哪些浏览器支持此语法](http://caniuse.com/#feat=arrow-functions) – Liam

回答

20

您正在使用箭头功能。 IE11不支持它们。改用function函数。

这里的Babel's翻译的,要ES5:

g.selectAll(".mainBars").append("text").attr("x", function (d) { 
    return d.part == "primary" ? -40 : 40; 
}).attr("y", function (d) { 
    return +6; 
}).text(function (d) { 
    return d.key; 
}).attr("text-anchor", function (d) { 
    return d.part == "primary" ? "end" : "start"; 
}); 
4

避免使用箭头的功能,如果你需要支持IE 11 it is not supported

改变那些常规功能,你希望你的代码应工作

g.selectAll(".mainBars").append("text").attr("x",function(d) { 
    return d.part=="primary"? -40: 40; 
}).attr("y",function(d){ 
    return +6; 
}).text(function(d) { 
    return d.key; 
}).attr("text-anchor", function(d) { 
    return d.part=="primary"? "end": "start"; 
}); 
相关问题