2015-06-24 69 views
0

這個過去的學年我從高中畢業,現在我在一家小型網絡營銷公司實習。我目前的任務是開發一個在線價格估算器,以便銷售人員能夠快速爲我們的服務提供一致的估算。這是我第一個Javascript項目。我之前在js中完成的最先進的事情只是一些小型和基本的dom操作任務。從表單輸入中計算數據而不使用eval()

我發現了一個網站,其估算量幾乎與我所需要的一樣穩健。所以我正在閱讀他們的代碼來弄清楚它是如何工作的,所以我可以製作自己的版本。有人告訴我,在用戶提交的數據上使用eval()是不好的做法。所以,我想知道在這段代碼中用什麼來代替eval()。

frm = document.form1; 

    for (var i = 0; i < document.form1.elements.length; i++) { 
     if (frm.elements[i].type == 'checkbox' || frm.elements[i].type     == 'radio') { 
      if (frm.elements[i].checked) { 
      v = eval("frm.val" + frm.elements[i].value); 
      mult = eval("frm.mult" + frm.elements[i].value); 
      mult = mult.value; 
      if (mult == '') { 
       mult = 1 
      } else { 
       mult = parseInt(mult) 
      } 
      hrs = hrs + parseInt(v.value) * mult; 
      var cur_val = frm.elements[i].title; 
      var make_rfp = cur_val.replace("___", mult); 
      document.getElementById('quote_des').value += make_rfp + "\n"; 
      } 
     } 
    } 

這裏是我把這個代碼從網站:https://www.designquote.net/html/dq_estimate_wizard.cfm

+0

爲什麼在用戶提交的數據上使用eval是不好的?它會運行任何JS客戶端,所以他們只能傷害自己。 http://stackoverflow.com/questions/1651118/security-risks-of-using-eval-to-execute-user-input-in-javascript –

回答

1

評估和演示是不好的做法,因爲它執行純JavaScript,如果你讓你的用戶在文本框輸入任何JS,然後執行,你已經建立了crosssitescripting的邀請;-) 它將允許您的用戶更改您網站上的內容,甚至將一些操縱的數據發送回您的服務器 - 如果有的話。

你在找什麼是一個類似mathjs的庫,它將一個String解釋爲一個數學公式。你可以在這裏找到更多關於這方面的信息 Evaluating a string as a mathematical expression in JavaScript

另一個選擇是編寫自己的formular-parser,如果庫沒有做你需要的東西,但那將會有更多的工作。

相關問題