2016-10-24 85 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"; 
}); 
相關問題