2010-11-23 4 views
1

j'ai quelques variables:Générer prix à partir d'une liste avec des variables Javascript

var test1 = 1500; 
var test2 = 500; 
var test3 = 3000; 
var test4 = 20000; 

Et j'ai une autre variable comme ceci:

var list = 'test3,test1'; 

Ce n'est pas fixé de toute évidence, de sorte que puisse être 'test4,test1,test2' etc.

Maintenant, j'ai besoin d'une variable de prix. test3+test1 = 4500

var price = '4500'; 

Mais je n'ai aucune idée de comment faire cela. Voici ce que j'ai jusqu'à présent:

var names = []; 
$(':checkbox:checked').each(function() { 
    names.push(this.name); 
}); 
var list = names.join(','); 

Des idées?

+0

... qu'est-ce que vous essayez de faire? –

+0

Quelle est la relation entre les cases à cocher et les variables de test? Est-ce le cas où vous avez une liste de cases à cocher et que chacune a un texte qui est le prix et vous devez les totaliser? précisez s'il vous plaît. – TJB

Répondre

6

Vous devez changer vos variables dans un objet approprié:

var prices = { 
    "test1": 1500, 
    "test2": 500, 
    "test3": 3000, 
    "test4": 20000 
} 

Maintenant, vous pouvez ajouter comme ceci:

var price = 0; 
$(':checkbox:checked').each(function() { 
    price += prices[this.name]; 
}); 
// The price variable now contains the sum 
+0

Merci, fonctionne parfaitement – passatgt

+0

Voilà ce que je suppose qu'il fait – TJB

0

Votre prix "test" devraient être dans un tableau test[1] = 1500; test[2] = 500; etc ..

Puis, sans se joindre à votre tableau dans une chaîne,

price = 0; 
for (i in list) { // assuming list is array of {3,1} not {test3,test1} 
    price += test[list[i]]; 
} 
1

Compte tenu de votre méthode, vous pouvez join les noms avec ' + ' au lieu de ',' et puis juste eval le résultat (voir example).

Cependant, il serait préférable de stocker les valeurs d'une manière qui ne nécessite pas l'utilisation eval, comme les stocker comme value des cases à cocher, ou en utilisant une correspondance entre les noms de cases à cocher et les valeurs (comme @cdhowie la réponse)

Questions connexes