2017-09-13 71 views
-2

如何在下面的代碼刪除EVAL:如何刪除eval()?

var c = 4; // c can change 

parseFloat(eval('document.formName.fieldName1' + (c + 1) + '.value * document.formName.fieldName2[' + c + '].value')); 

我已經試過對象,數組,全局窗口變量,當與document.formName選擇合併沒有什麼作品。

更新:標記爲重複的答案不適用於我的問題,因爲我的代碼基於document.form.field.value選擇器讀取表單值。該解決方案無效。我也嘗試過對象,數組等等。

+0

你可以寫什麼寫在那裏JS,而不是作爲一個字符串。 你有什麼是一個正在與變量總結的字符串,所以如果你想要該字符串執行你需要eval。但是你真的不需要把它當作一個字符串。 – Dellirium

+0

謝謝,這是一箇舊代碼,我已經嘗試了所有可用的解決方案。現在按照下面的答案開始工作。 – Ciprian

+0

@Ciprian:標記的副本是正確的。它解釋了使用動態名稱訪問對象屬性的概念。 – Cerbrus

回答

1

在這裏你去:

parseFloat(document.formName["fieldName1" + (c + 1) ].value * document.formName.fieldName2[c].value); 
+0

這工作,非常感謝你。我不知道爲什麼它沒有在字段名稱前面加一個點「。」,但它確實存在。 – Ciprian

+0

@Ciprian JS中有一個點存取器語法和一個括號存取器語法。 – Xufox

+0

你活着,你學習。我會Google訪問者語法。謝謝。 – Ciprian