【发布时间】:2014-09-30 00:32:25
【问题描述】:
同样的问题更多 if() 语句会导致它停止工作。
我正在为我的广告代理商构建一个自定义订单表单,用户可以在其中从表单复选框中选择他们想要的商品,并且下面的小计/订单汇总表会相应更新。客户必须至少获得 1125 美元的基本位置,而四个次要位置是可选的,价格为 450 美元。如果客户决定获得额外的[s],那么交易成本也会上升(每个 75 美元)。
一切正常,直到我达到最高金额,然后表格无法正确更新。
更新了完整问题的小提琴: http://jsfiddle.net/joelslevy21/5v8Ltkxf/3/
更新脚本:
if ( totalFinal == "3,330" ) {
$('#companion').css("display","block");
$('#quantityCompanion').text("4");
$('#subTotalCompanion').text("$1,800");
$('#quantityTrafficking').text("5");
$('#subTotalTrafficking').text("$375");
} else if ( totalFinal == "2,775" ) {
$('#companion').css("display","block");
$('#quantityCompanion').text("3");
$('#subTotalCompanion').text("$1,350");
$('#quantityTrafficking').text("4");
$('#subTotalTrafficking').text("$300");
} else if ( totalFinal == "2,250" ) {
$('#companion').css("display","block");
$('#quantityCompanion').text("2");
$('#subTotalCompanion').text("$900");
$('#quantityTrafficking').text("3");
$('#subTotalTrafficking').text("$225");
} else if ( totalFinal == "1,725" ) {
$('#companion').css("display","block");
$('#quantityCompanion').text("1");
$('#subTotalCompanion').text("$450");
$('#quantityTrafficking').text("2");
$('#subTotalTrafficking').text("$150");
} else {
$('#companion').css("display","none");
$('#quantityTrafficking').text("1");
$('#subTotalTrafficking').text("$75");
}
【问题讨论】:
-
一遍又一遍地调用
.getElementsByClassName()不好 - 你为什么不直接使用$('.final').each(...)? -
Here's a fixed version of the fiddle。我不明白到底是什么问题。
-
@Pointy 我不知道 .getElementsByClassName() 不是通过它的类来调用某些东西的最佳方式,感谢您提供的信息。感谢您修复小提琴,出于好奇,它有什么问题?问题是在订单中添加一个点并且您尝试删除该点后,订单摘要中的投放数量和小计不会分别回退到“1”和“$40”,而是停留在“2”并且“80 美元”。
-
好吧,
.getElementsByClassName()并没有什么问题,但是浏览器必须处理它,因此每次循环迭代都重新执行它以获取单个元素是非常低效的。既然您已经在使用 jQuery,那么您不妨全力以赴。我所做的只是将 JavaScript 移动到正文(jsfiddle 设置)并在页面中添加一个“数量”元素,因为它丢失了。 -
为什么你的
function orderSummary()在你的function calculate()和while(init = document.getElementsByClassName("final")[i++]) {里面?
标签: javascript php html css forms