2012-02-01 35 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中使用不足的对象。