Mam formułę przechowywaną jako tekst. Dostaję tę wartość z div, ale do celu tego pytania po prostu przypiszę wartość ręcznie.

price_formula = "100.00 + (pages-24)/4 * 25.00"

Teraz moim celem jest wymiana pages z wartością numeryczną, a następnie wykonaj matematykę na tej formule i wynika wynik.

Oto, czego próbowałem:

price_formula = "150.00 + (pages-24)/2 * 30.00";
price_formula = price_formula.replace('pages', 32);
alert(price_formula); // outputs "150.00 + (32-24)/2 * 30.00)"
alert(Math.floor(price_formula)); // outputs "NaN"

Jak mogę użyć łańcucha Price_formula jako rzeczywistej wzoru?

0
narfie 13 sierpień 2014, 23:45

2 odpowiedzi

Najlepsza odpowiedź

Może to być super niebezpieczne i powinieneś Uważaj na zawartość wygenerowana przez użytkownika.

Ciąg nie jest liczbą (NaN) - Więc nie możesz wykonać metod matematyki na nim (jak Math.floor).

Ty może przeczytaj ciąg jako javascript i ocenić go za pomocą eval:

var priceFormula = "150.00 + (pages-24)/2 * 30.00";
var price = eval( priceFormula.replace(/pages/g, 32) );
1
Community 23 maj 2017, 11:49

Możesz po prostu zmienić strony " do dowolnej żądanej wartości za pomocą funkcji replace() tak:

price_formula = "100.00 + (pages-24)/4 * 25.00";
price_formula=price_formula.replace('pages','your value here');
0
Amin Jafari 13 sierpień 2014, 19:48