-3

我正在制作一个表格来输入产品到仓库,所以,我想要的条件是:

当我在数量框(蓝色圆圈)中键入并输入一个值时,我希望该值显示到另外 10 个输入框托盘列表(红色圆圈),每个框中必须是69 件69 只是实际适合的总数在实际仓库的托盘上),如果还有剩余,则将最后一个剩余的放在最后一个盒子中。这是可能有帮助的插图:

在此处输入图像描述

比如说,我已经生产了630件商品,当我将630放入数量框时,每个托盘列表中应该显示69件,直到不能再次划分为止其余部分必须放在最后一个盒子上。

例子 :

数量 : 630 PCS

托盘 1:69

托盘 2:69

托盘 3:69

托盘 4:69

托盘 5:69

托盘 6:69

托盘 7:69

托盘 8:69

托盘 9:69

托盘 10:9(其余的必须在最后一个托盘上)

有人能帮我吗?谢谢你,泰瑞玛卡西。

4

2 回答 2

1

您需要模运算和整数除法。JavaScript 中的%运算符可以很好地作为正数的模。对于这个特定问题,您不需要对负数进行正确的模运算。整数除法是下限法线除法。该Math对象提供了一种floor方法。

var
  byId     = document.getElementById.bind(document),
  intVal   = id => parseInt(byId(id).value),
  onChange = ev =>
  {
    let
      qty  = intVal('quantity'),
      ppb  = intVal('peaces-per-box'),
      rest = qty % ppb,
      html = ''
    ;
    if(!qty || !ppb)
      return byId('pallets').innerHTML = '';

    for (var c = Math.floor(qty / ppb), i = 0; i < c; i++)
      html += `<div></div><lable for="pallet-${i}"></lable> <input id="pallet-${i}" value="${ppb}"></div>\n`;
    if(rest)
      html += `<div></div><lable for="pallet-${i}"></lable> <input id="pallet-${i}" value="${rest}"><div></div>\n`;
    byId('pallets').innerHTML = html;
  }
;
byId('quantity'      ).addEventListener('change', onChange);
byId('peaces-per-box').addEventListener('change', onChange);
onChange();
<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <title>Quantities</title>

<body>
  <form>
    <div>
      <lable for="quantity">quantity</lable>
      <input id="quantity" type="number" min="0" step="1" placeholder="enter quantity">
    </div>
    <div>
      <lable for="peaces-per-box">peaces per box</lable>
      <input id="peaces-per-box" type="number" min="1" step="1" placeholder="enter max. peaces per box">
      <div id="pallets">
      </div>
    </div>
  </form>

于 2018-09-15T04:38:43.920 回答
0
let input = 630
let arr = []
for(let i=0;i<9;i++){
    arr.push(0)
    if(input>=69){
        arr.push(69)
        input-=69
    }
}
arr.push(input)

我不知道这是不是你想要的。

于 2018-09-15T03:42:16.410 回答