从已解决的案例中继续解决新问题。以下代码计算从另一个脚本通过ajax加载的值。另一种形式的一系列选项决定了加载了哪些信息,因此确定了最终的计算结果。
问题是,一旦你加载了所有可用的选项,你就无法将它们加载出来,并且加起来所有字段总数的脚本实际上在这一点上确实失败了。因此,例如,如果您加载2个选项,它将占总数。加载到第三个,它将加总所有的全部3.取出一个选项,然后脚本失败。我认为这与脚本获取产品ID的方式有关 - var productIds = {};
任何帮助将不胜感激
这是代码
var productIds = {};
function product_totals(id) {
productIds[id] = true; // store all id's as the totals are calculated
var quantity = $c('product_quantity_' + id).value;
var price = $c('product_price_' + id).value;
var duration = $c('product_duration_' + id).value;
var dives = $c('product_dives_' + id).value;
var hire = $c('product_hire_' + id).value;
Number($c('product_price_total_' + id).value = price * quantity);
Number($c('product_duration_total_' + id).value = duration * quantity);
Number($c('product_dives_total_' + id).value = dives * quantity);
Number($c('product_hire_total_' + id).value = hire * quantity);
function $c(id) {
return document.getElementById(id);
}
var totalPriceTotal = 0;
var totalDurationTotal = 0;
var totalDivesTotal = 0;
var totalHireTotal = 0;
for (var id in productIds) {
// multiply by 1 to make sure it's a number
totalPriceTotal += $c('product_price_total_' + id).value * 1;
totalDurationTotal += $c('product_duration_total_' + id).value * 1;
totalDivesTotal += $c('product_dives_total_' + id).value * 1;
totalHireTotal += $c('product_hire_total_' + id).value * 1;
}
$c('GT_total_price').value = totalPriceTotal;
$c('GT_total_duration').value = totalDurationTotal;
$c('GT_total_dives').value = totalDivesTotal;
$c('GT_total_hire').value = totalHireTotal;
function $c(id) {
return document.getElementById(id);
}
}
工作样本http://www.divethegap.com/update/diving-trips/adventure-training/#level_01(点击初学者)非常感谢
答案 0 :(得分:0)
如果我理解,你想要实现的是在数组中叠加一组id,你可以从中删除项目,这样你就可以只计算选定的选项。我会声明var productIds = [];
并使用productIds.push(id)
在其中添加ID。删除选项后,您可以使用productids.splice(indexofId, 1);
。当你重新训练时,你就会得到你想要的ids。