2016-08-06 22 views
0

Ich habe zwei Variablen für die horizontale und vertikale Ausrichtung sagen xPos und yPos und es wird der Wert als 0 für sie in CSS wie folgt vergeben:`var` in CSS funktioniert nicht in IE

var xPos="left", 
    yPos="bottom"; 

$(".applyCss").css({ 
    "width":"200px", 
    "height":"200px", 
    "position":"absolute", 
    "background-color":"#E0E0E0", 
    [xPos]:0, 
    [yPos]:0 
}); 

Diese Logik ist funktioniert gut außer in IE. Es zeigt

Expected identifier, string or number 

ich viele Fragen in Stackoverflow genannt, und ich habe die Antwort als „Internet Explorer Probleme haben mit Kommas in Objekte und Arrays Hinter“. Aber ich keine Lösung für dieses Problem bekommen haben

Hier ist die jsFiddle

(Anmerkung: Ich habe eine Abhilfe für dieses Problem, aber ich will eine Lösung für diese Methode kennen)

+1

Die Syntax '{[p]: k}' ist ES2015. Welche Version von IE verwenden Sie? Beachten Sie, dass Sie das Objekt einer Variablen zuweisen und danach die Klammer-Notation verwenden, wie zum Beispiel 'var o = {}; o [p] = k', das wird in allen Browsern unterstützt. – elclanrs

+0

[IE unterstützt nicht] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Browser_compatibility) berechnete Eigenschaftsnamen – Andreas

+0

@elclanrs Meine IE-Version ist 10 – Thinker

Antwort

1

That Object Literal Bracket Syntax ist neu in ES6 (auch bekannt als ES2015). Es funktioniert in modernen Browsern wie Firefox, Chrome und Edge, aber IE erreicht kaum ES5-Kompatibilität.

Entweder Babel für Browser-Kompatibilität verwenden, oder die alte treue Syntax:

var xPos="left", 
    yPos="bottom"; 

var myStyles = { 
    "width":"200px", 
    "height":"200px", 
    "position":"absolute", 
    "background-color":"#E0E0E0", 
}; 
myStyles[xPos] = 0; 
myStyles[yPos] = 0; 
$(".applyCss").css(myStyles);