我试图弄清楚如何显示发运订单所需的每个盒子的最小数量。我完成了大部分工作,但似乎仍然无法完成该计划。这是我到目前为止在js中所拥有的:
var calculate_boxes = function() {
var dvds = parseFloat($("dvds").value);
//Be sure the value entered is a positive number.
var cave = dvds / 24;
dvds = dvds % 24;
var bakers = dvds / 13;
dvds = dvds % 13;
var dimes = dvds / 10;
dvds = dvds % 10;
var quads = dvds / 10;
dvds = dvds % 10;
var twins = dvds / 4;
dvds = dvds % 4;
var minis = dvds / 1;
dvds = dvds % 1;
cave = parseInt($("cave").value);
bakers = parseInt($("bakers").value);
dimes = parseInt($("dimes").value);
quads = parseInt($("quads").value);
twins = parseInt($("twins").value);
minis = parseInt($("minis").value);
}
答案 0 :(得分:1)
你正在设置像var cave = dvds / 24;
这样的变量,但是稍后在函数中你用cave = parseInt($("cave").value);
这样的值覆盖那些变量 - 我猜你要做的是隐藏小数值当前存储在cave
变量中的整数,但是通过使用jQuery代码$("cave").value
,您的代码实际执行的操作是尝试选择标记名为“cave”的元素,即{{1}并获取其值,然后将该值传递给<cave>
。
在JavaScript中,您可以使用几种Math方法中的一种将小数转换为整数 - 使用哪种方法取决于您是要向上舍入,向下舍入还是舍入到最接近的整数。
出于当前目的,您始终要向下舍入,因此请使用Math.floor()
。在函数结束时无需将其作为单独的操作,只需立即执行:
parseInt
另外,大概你的“四边形”应该除以4而你的“双胞胎”应该除以2。
另外,我不确定为什么你在功能开始时使用var cave = Math.floor(dvds / 24);
dvds %= 24; // note that dvds %= 24 is equivalent to dvds = dvds % 24
var bakers = Math.floor(dvds / 13);
dvds %= 13;
// etc
开始 - 能够订购一小部分DVD是没有意义的。除了目前缺少正数的验证之外,您还需要检查是否输入了整数。
另外,你对“minis”的最终计算是1进行无意义的除法:在那个阶段,你知道parseFloat()
没有dvd剩余,所以你不需要在下一行进行无意义的模运算
如果您应用上述更改并删除minis = dvds
内容,则应该更接近您的目标:尝试一下并尝试一下,如果仍然无效,请回复我们。< / p>