JavaScript 能做的事并不局限于访问HTML 表单的数据它还能让你创建自己的对象——也就是让你创建储存于客户端的数据你甚至还能建立包含其它对象的对象
为什么需要这些功能?一个好的理由就是创建数组(array)简单来说数组是一个含有几组相关信息的表格或数据库在下面的例子当中我们定义了一个叫做taxTable的对象该对象包含一个数组而该数组由五个 name 对象实例所组成这个数组保存五个州的州名以及它们相关的税率然后当用户在订购表单中输入州名时我们就在数组中检查它并自动应用正确的税率
创建一个x的数组与使用一个快速的 ifthen 序列来测试州名相比使用数组似乎还要做额外的工作不过随着条目个数的增加数组的功能也就变得愈来愈强大不妨想象有一个拥有五十个州或五百个销售区亦或是五千个城市的表格有了一个数组你就能够一次建立条目列表然后每当用户输入新数据时就可迅速加以引用这个条目列表
下面这个特殊的JavaScript 代码开始就像我们的计算(calculation)示例一样不过这一次我们并不止于简单的数学计算
function state(stateName stateTax){
//fill the instance with the values passed in
thisname=stateName;
thistax=stateTax;
//then return the instance of state
return this;
}
上面定义的state() 函数创建了包括州名与税率的一个州(state)的实例然而我们的州此时似乎什么值都没有下面我们给它们一些值吧
function taxTable(){
//the instance of taxTable is filled with
//an array of state objects
this[]=new state(AZ );
this[]=new state(HI );
this[]=new state(TX );
this[]=new state(NJ );
this[]=new state( );
//return the newly created taxTable to
//the calling function
return this;
}
现在无论taxTable函数何时被调用我们都创建了五个不同的州实例分别编号为到这样一来我们就创建了一个数组来保存我们所有的税率信息现在我们需要加以处理一番
functioncalculateTax(stateValue){
var index=;
var result=;
var temp=;
首先我们定义一个称为calculateTax的函数calculateTax会以初始化一些变量开始然后它需要从用户那里取得一个值
//while theres an instance of state
//in the taxGuide array
while (taxGuide[index])
{
//if the state passed in is in the
//taxGuide array
if (stateValuetoUpperCase() == taxGuide[index]name) {
// put the correct tax rate in result
result = taxGuide[index]tax;
}
index++;
}
while 循环会持续将用户的输入与税率表中的所有可能的条目进行比较直到比完完全部数据一旦它发现一个匹配(或是没有匹配)它就将适当的税率写入 result 变量中然后我们可以使用该税率来计算总量然后将其加至我们的总额之中
{
calcTotal();
var temp = documentorderFormtotalPricevalue;
// calculate total with tax
var temp = (parseFloat(temp) * ( + parseFloat(result)));
// chop off extra decimal places
vartotalWithTax = (Mathround(temp * )) / ;
// change value in form
documentorderFormtotalPricevalue =
totalWithTax;
}
上面的代码计算包括税金在内的全部费用首先我们设定变量temp 的值等于totalPrice表单元素的值然后我们再计算税后总额并将其值赋给temp下一行代码则使用Mathround方法捨去额外的小数位然后将新的总额赋值给totalWithTax变量接下来我们将此总额送回到订购表单之中