Der folgende Code funktioniert in IE 11 nicht, er löst einen Syntaxfehler in der Konsole aus
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"));
Verwendung eines d3.js
zweiteiligen Diagramms zur Visualisierung
Dieser Code verursacht das Problem in der obigen Anweisung d=>(d.part=="primary"? -40: 40)
javascript
internet-explorer
Prakashkadakol
quelle
quelle
function (d) { return d.part == "primary" ? -40 : 40; }
.var f = () => "foo";
if (a=>0)
ist immer wahr. Dies liegt daran, dass Sie eine Funktion erstellt haben, keinen Vergleich, und Funktionen wahr sind.if (a<=0)
wäre der richtige Weg, das zu schreiben.Antworten:
Sie verwenden Pfeilfunktionen. IE11 unterstützt sie nicht. Verwenden Sie
function
stattdessen Funktionen.Hier ist Babels Übersetzung davon zu 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"; });
quelle
this
:var f = (a) => {a.some1(); this.some2();};
tovar f = function(a) {a.some1(); this.some2();}.bind(this);
Vermeiden Sie die Verwendung von Pfeilfunktionen, wenn Sie IE 11 unterstützen müssen, da es nicht unterstützt wird
Ändern Sie diese in reguläre Funktionen und Ihr Code sollte wie erwartet funktionieren
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"; });
quelle
Bevor Pfeilfunktionen Pfeilfunktionen waren, waren sie im Allgemeinen reguläre JS
function
. Mit IE11 müssen wir also nur einen Schritt zurück in die Vergangenheit machenvar fruits=["apple","banana","orange"]; var modernResult=fruits.find(e => e.includes("nana")); console.log(modernResult); var IEresult=fruits.find(function(e){return e.includes("nana")}); console.log(IEresult);
quelle
IE unterstützt die Pfeilnotation derzeit nicht, aber es gibt eine praktische und schnelle Möglichkeit, Ihre
ES6
Codes zumES5.1
Arbeiten zu transpilierenIE
. Besuchen Sie die Babel- Website, fügen Sie Ihre Codes in das linke Feld ein und kopieren Sie den rechten Feldcode, der in die frühere Version von transpiliert wurdeJavaScript
.Zum Beispiel wird Ihr Code transpiliert in:
"use strict"; 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"; });
quelle