我这里有一块JC代码: $
function Test() {
var form = $('form').serializeArray();
var str = "";
var Price = {};
var OneUp = 1;
var NextName = "";
var PriceIndex = 0
for (var i = 0, l = form.length; i < l; i++) {
OneUp = i + 1;
if (form[i].name.indexOf("_Sel_") != -1) {
NextName = form[OneUp].name.substring(0, form[OneUp].name.indexOf(":"));
Price[PriceIndex] = form[OneUp].name.substring(form[OneUp].name.indexOf(":") + 1, form[OneUp].name.length);
PriceIndex += 1;
str += form[i].name.replace("_Sel_", "") + ': <span class="ColorMe">' + NextName + "</span><br/>";
}
}
for (var i = 0, l = Price.length; i < l; i++) {
Price[i] = parseFloat(Price[i]) + .05;
}
var Total = 0.05;
for (var i = 0, l = Price.length; i < l; i++) {
Total += Price[i];
}
$(".PriceMe").html(Total.toString());
$(".UpdateMe").html(str);
};
由于没有明显的原因或任何错误,我们会跳过此部分代码:
for (var i = 0, l = Price.length; i < l; i++) {
Price[i] = parseFloat(Price[i]) + .05;
}
var Total = 0.05;
for (var i = 0, l = Price.length; i < l; i++) {
Total += Price[i];
}
$(".PriceMe").html(Total.toString());
任何人都可以向我解释为什么和/或解决我当前的问题。 我也很抱歉我是一名新手JC编码器,所以我很乐意接受你在我的代码中看到的任何风格或其他问题。 Thxs。
答案 0 :(得分:0)
价格是一个对象({}
),因此它没有长度属性
要通过对象,你需要这样做,例如:
var obj = {};
obj['key'] = 'value';
obj['key2'] = 'value2';
for(var val in obj){
//val => key
//obj[val] => value
}
答案 1 :(得分:0)
Price.length
未定义,请使用:
for (var i = 0, l = $(Price).length; i < l; i++) {
Price[i] = parseFloat(Price[i]) + .05;
}
var Total = 0.05;
for (var i = 0, l = Price.length; i < l; i++) {
Total += Price[i];
}
$(".PriceMe").html(Total.toString());
对于访问obj值,您可以使用for(var key in obj)
。
答案 2 :(得分:0)
var PriceIndex = 0
之后忘记了分号。没有必要在for循环中声明一百个变量。您只需使用(var i = 0; i < Price.length; i++)
即可。
如果你在彼此之后声明多个变量,你可以这样做:
var a = 0, b = 1, c = 2;
您无需一直使用var
。 length
方法仅适用于数组或html元素集合。为了从对象获取属性,您使用in
关键字来循环该对象for (i in object)
要访问对象,您可以使用object.property
或object["property"]
,如果您这样做object[property]
,javascript会认为属性是一个变量,并且会搜索它,如果它找到它,javascript将返回该值并开始在该对象中搜索,如果该值不是字符串,或者在该对象中找不到值,javascript将返回值undefined
。
编辑:
form具有length属性,因为jQuery在DOM中搜索该元素,并返回一个html元素集合,就像一个数组具有length属性一样。