2012-02-01 3 views
1

私は約20の入力フィールドを持つフォームを持っています。私はこれらのフィールドの値を取得し、次にいくつかの計算を行い、いくつかの値を出力します。フォームデータのキャプチャ:変数または配列?

フォームデータをキャプチャする推奨/推奨方法はありますか?現在、すべてのフォームフィールドを別々の変数に格納しています。私はそれを配列に格納する方がより良い、より効果的なアプローチになるのではないかと思っていました。

私は、ベストプラクティスを学ぶために、一般的にはJavaScriptやプログラミングに新しくなっています。

+0

[codereview.stackexchange.com](http:// codereview。stackexchange.com)、コードを記述します。 –

答えて

2

これに関する私のベストプラクティスは、データで何をすべきかによって異なります。ループを繰り返す必要がない場合、または別のページ/サービスに送信する必要がない場合は、個々のスコープ付き変数には何も問題はありません。

私はループする必要がある場合、私は一般的にループやループを使用する配列やオブジェクトを使用します。

別のページ/サービスに渡す必要がある場合は、残りの部分をカプセル化するために1つのオブジェクト変数を作成します。そのため、JSONに「ストリング化」してもう一方のオブジェクトを解析します。

ちょうど私の意見、

ピート

0

3つ目のアプローチを考えてみてください。フォームのデータをどこにも格納せずに使用するだけです。

最初に正しいかどうかを確認し、正しいものと判断したら使用してください。

+0

私が行っている計算では、いくつかの異なる数式でそのデータの一部を使用する必要があるので、それらを変数/配列に格納することは私にとって適切なアプローチのようです。しかし私は間違っている可能性があります。 – finspin

+0

私は変数をフォームに入れて、計算の中でフォーム['value']のようなものを使用します。 より頻繁に使用される変数については、それらを変数に入れることができます。それらを配列に置くと、多くのメリットが得られません。フォームは配列の一種であるため、配列を追加する必要はありません。 –

0

あなたがのようなものを使用することができますので、あなたは常に、入力要素に属性「名前= ...」を割り当てる必要があります場合

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

あなたはjqueryを使用しています... jqueryを使用する場合は単純です$( 'input [name = "email"]')=何かを実行

exaの場合は、名前ではなく名前で変数を呼び出すことができるので、入力[name = "email"] "に対応する" mple "フォーム[0]。

+0

これは私が現在やっていることですが、20〜30の変数が私には圧倒していたようですので、フォームデータを扱うより良い方法があるのだろうかと思っていました。 – finspin

+0

この方法でやり続けることをお勧めします。同じコントロールが必要な入力が2つ以上ある場合は、20個の関数を記述するのではなく、すべての関数を1つだけ書く必要があります。 – AleVale94

0

ユニークなフィールド名とOOPの利益を得るために、JavaScriptでarray秒の連想プロパティを使用します。

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の配列は、多用途であり、JSのIMOアンダースレッディングされたオブジェクトです。

関連する問題