2010-11-02 6 views
3

J'ai besoin de choisir une propriété pour animer puis faire de l'animation.Utiliser la variable de chaîne comme champs d'objet

Le code doit être comme un suivant:

var prop = "background-color"; 
switch(val) 
{ 
    case 1: prop = "color"; 
    case 2: prop = "border-color"; 
    // ... 
} 
item.animate({prop: "#00FF00"}, 1000); 

JavaScript se plaint de l'utilisation variable "prop".

Quand je dis juste

item.animate({"color": "#00FF00"}, 1000); 

tout va bien.

Je pense qu'une constante est attendue en tant que déclaration de propriété d'objet.

Comment puis-je le déterminer lors de l'exécution?

Répondre

5

Ce sont équivalentes:

// prop is a literal string here, 
// not a variable 
{prop: "#00FF00"} 

et

{"prop": "#00FF00"} 

vous avez probablement besoin de faire quelque chose comme ceci:

var obj = {}; 
obj[prop]="#0000ff"; 
item.animate(obj, 1000); 
2

Oui, vous avez raison, JavaScript attend un identificateur comme nom de propriété dans un littéral d'objet. Vous devrez créer un objet et affecter la propriété à l'aide de la notation en crochets.

var opts = {}; 
opts[prop] = "#00FF00"; 
item.animate(opts, 1000);