2012-02-01 17 views
1

我有一個包含約20個輸入字段的表單。我捕獲這些字段的值,然後進行一些計算並輸出多個值。捕獲表單數據:變量還是數組?

是否有捕獲形式數據的一個優選的/推薦的方法是什麼?目前我將每個表單字段存儲到一個單獨的變量中。我想知道是否將它存儲到數組將是更好和更有效的方法。

我對JavaScript和編程一般都很陌生,試圖學習最佳實踐。

+0

你可能想嘗試[codereview.stackexchange.com(HTTP://代碼審查。stackexchange.com)幷包含您的代碼。 – 2012-02-01 21:39:07

回答

2

我的最佳實踐取決於我對數據的處理方式。如果我不需要遍歷它,或者將它發送到另一個頁面/服務,那麼單個scoped變量沒有任何問題。

如果我需要循環,我通常使用數組或對象來循環。

如果我必須將它傳遞給另一個頁面/服務,我會創建一個對象變量來封裝其餘的部分,這樣我就可以將它「字符串化」爲JSON並解析回另一端的對象。

只是我認爲,

皮特

0

您可能會考慮第三種方法 - 只使用表單中的數據而不將它存儲在任何位置。

首先檢查正確性,一旦它被認爲是正確的只是使用你擁有的。

+0

在我正在做的計算中,我需要使用幾種不同公式中的某些數據,因此將它們存儲到變量/數組中似乎對我來說是正確的方法。但我可能是錯的。 – finspin 2012-02-01 21:45:37

+0

我會將表單放入變量中,然後在計算中使用類似[[value]]的形式。 對於經常使用的變量,您可以將它們放入變量中。把它們放在數組中並不會給你帶來太多好處,form是一種數組,所以不需要添加額外的數組。 – 2012-02-03 02:09:10

0

你應該始終分配屬性 「名稱= ...」 來輸入元素,因此您可以使用類似:

var form = document.forms['form']; 
var email = form['email']; 
email = do something 

如果你使用javascript ...如果你使用jquery它很簡單$('input [name =「email」]')=做某事

我更喜歡這種方式,因爲你可以調用變量的名字而不是數字, mple「form [0]對應於輸入[name =」email「]」。

+0

這就是我目前正在做的事情,但有20-30個變量對我來說似乎有點壓倒性,所以我想知道是否有更好的方式來處理表單數據。 – finspin 2012-02-01 21:48:53

+0

我建議你繼續這樣做,然後你可以用一些函數檢查它們。如果你有兩個或更多的輸入需要相同的控制,你不必寫20個函數,但是所有的輸入都只有1個。 – AleVale94 2012-02-01 21:55:28

0

使用的array S IN JavaScript的關聯性來獲得的唯一字段名和OOP的好處:

var formModel = new Array(); 

formModel['myField'] = getMyFieldValue(); // make 'myField' index to any object 

然後,你可以做這樣的事情:

  • formModel['myField'] // get the value
  • formModel.length; // number of fields added
  • for (entry in formModel) { /* loop thru entries */ }
  • formModel.sort([compareFunction]) // custom sort
  • formModel = []; // clear the model
  • Convert array to JSON
  • 任何這些ArrayMDN便利設施。

只是一種方法,但在JS中的數組是非常靈活的和IMO在JS中使用不足的對象。