【发布时间】:2026-02-15 17:05:02
【问题描述】:
我有这段代码
listItems = $("#productList").find("li");
for (var li in listItems) {
var product = $(li);
var productid = product.children(".productId").val();
var productPrice = product.find(".productPrice").val();
var productMSRP = product.find(".productMSRP").val();
totalItemsHidden.val(parseInt(totalItemsHidden.val(), 10) + 1);
subtotalHidden.val(parseFloat(subtotalHidden.val()) + parseFloat(productMSRP));
savingsHidden.val(parseFloat(savingsHidden.val()) + parseFloat(productMSRP - productPrice));
totalHidden.val(parseFloat(totalHidden.val()) + parseFloat(productPrice));
}
我没有得到想要的结果——totalItems 的结果是 180+,其余的都是 NaN。我怀疑它在哪里我使用var product = $(li); 或者可能与循环本身的表达式一起使用。无论哪种方式 - 我都需要遍历标记为 #productList 的 <ul> 中的 <li> 项目
【问题讨论】:
-
您的“累加器”字段是否以空值开头?如果是这样,这就是您的
NaN结果的来源。 -
您获得 180 多个项目的原因是
for/in包含原型属性以及实际实例的属性。可以针对 jQuery 对象调用的所有 jQuery 方法都是对象原型的一部分。如您所知,.each()是一种常见的迭代方式,但不是唯一的方式。 -
.each 都会这样做。一个工作示例jsfiddle.net/Lijo/Hb28u/16
-
感谢您的评论,但这是 2 年前回答的......
标签: javascript jquery