2014-02-10 49 views
0

我一直在想如果可以使用HTML <input id="in">(我可以輸入可以說25/6 * 3)並輸出Javascript的數學評估,我寫了一些東西這是非常可以理解的,沒有工作,有沒有辦法讓它工作?是的,你可以使用eval()功能
Javascript - 將HTML輸入字符串轉換爲數學評估

function go() { 
    var x = $("#in").val(); 
    alert(parseInt(x)) 
} 

你的答案是大加讚賞

+2

的表達式解析器你的問題不是很清楚。 '#in'包含什麼? –

+0

請提供我的代碼在小提琴 – Jain

+1

我想eval()會做到這一點。 http://jsfiddle.net/j08691/Vajh4/ – j08691

回答

2

。假設你輸入的是一個值,那麼你可以簡單地調用eval(myString)來返回結果。

例如,如果你執行以下命令:

alert(eval('3 + 4')); // alerts 7 

警惕,雖然在任何你真的不應該保存爲這可能導致JavaScript攻擊,如果有人能提出一些JavaScript即會在別人的瀏覽器上運行。

0

是的,有可能做你在問什麼;你只需要使用eval()但是,使用eval()不是很安全。因爲這意味着任何位於#in內部的Javascript代碼將被評估,這可能不是您想要的。

更好的方法是編寫一個解析器來解析數學表達式並構建一個語法樹,然後對其進行評估。

+1

那麼考慮到在頁面中輸入的人只會影響他們自己的瀏覽器,我不明白爲什麼任何惡意結果都將是任何人的錯,但他們自己的錯。 – j08691

+0

@ j08691當然;我並不是暗示這種情況下的惡意,而只是提醒OP注意使用'eval()'的警告。 –

0

您可以使用math.js

alert(math.eval('3 + 4'));