0

好的,所以我对使用 JavaScript 编写代码是新手,这实际上是我的第一次尝试,这是我的问题。我需要用这个表单做的是将 Qty 框的输入与 Price 框的输入相乘并自动填充 Ext 框,但我只能弄清楚如何添加 Qty 和 Price 的总数并将该总数填充到分机盒。这是我正在使用的代码:

function multiply1() {
    var extend1=0
    for (var i=1; i <= 2; i++) {
        var id = "1_value"+i;
        extend1 = extend1 + document.getElementById(id).value*1;
    }
    document.getElementById("extend1").value = extend1;
}
function multiply2() {
    var extend2=0
    for (var i=1; i <= 2; i++) {
        var id = "2_value"+i;
        extend2 = extend2 + document.getElementById(id).value*1;
    }
    document.getElementById("extend2").value = extend2;
}
 function multiply3() {
    var extend3=0
    for (var i=1; i <= 2; i++) {
        var id = "3_value"+i;
        extend3 = extend3 + document.getElementById(id).value*1;
    }
    document.getElementById("extend3").value = extend3;
}
function multiply4() {
    var extend4=0
    for (var i=1; i <= 2; i++) {
        var id = "4_value"+i;
        extend4 = extend4 + document.getElementById(id).value*1;
    }
    document.getElementById("extend4").value = extend4;
}
 function multiply5() {
    var extend5=0
    for (var i=1; i <= 2; i++) {
        var id = "5_value"+i;
        extend5 = extend5 + document.getElementById(id).value*1;
    }
    document.getElementById("extend5").value = extend5;
}

此外,如果您在 qty 框中输入总数,它将填充 ext 框,但也应填充到 Material Total 框中的 ext 框的总数,这显然没有发生,脚本可以将 ext 框加起来并填充材料您可以通过在任何 ext 框中输入总计来看到总计框,它将填充或总计到材料总计框中。

好的,所以首先我需要将 Qty 和 Price 框相乘,其次我需要弄清楚为什么这个脚本在从 Qty 和 Price 脚本输入后没有从 ext 框中获取值

function summate() {
    var mattotal=0
    for (var i=1; i <= 5; i++) {
        var id = "extend"+i;
        mattotal = mattotal + document.getElementById(id).value*1;
    }
    document.getElementById("mattotal").value = mattotal;
}

谢谢你的帮助!

4

3 回答 3

2
function multiply1() {
    var qty = document.getElementById('1_value1').value;
    var price = document.getElementById('1_value2').value;
    if (qty && price) {
        var total = qty * price;
        document.getElementById("extend1").value = total;
    } else {
        document.getElementById("extend1").value = '';
    }
}

也不需要有5个不同的multiplyN功能。编写一个N以参数为参数的函数,并使用该函数计算元素的 ID。

于 2013-05-26T05:53:08.937 回答
2

我需要(...)将 Qty 框的输入与 Price 框的输入相乘并自动填充 Ext 框

首先,您正在对值求和 ( extend1 = extend1 + document.getElementById(id).value*1;)。如果你想将它们相乘,那么,将它们相乘(但不要忘记extend11而不是初始化0):

function multiply1() {
    var extend1 = 1;                                           // <--changed here
    for (var i=1; i <= 2; i++) {
        var id = "1_value"+i;
        extend1 = extend1 * document.getElementById(id).value; // <--changed here
    }
    document.getElementById("extend1").value = extend1;
}

multiply1()因此,创伤最小的方法是从到这样做multiply5()


好的,首先我需要将 Qty 和 Price 框相乘,其次我需要弄清楚为什么这个脚本在从 Qty 和 Price 脚本输入后没有从 ext 框中获取值

summate()没有被调用,因为它被输入的 " "事件所吸引onInputextendN。你正在改变extendN

document.getElementById("extend1").value = extend1;

不会触发事件onInput

最快的解决方案?设置extendN的值后,调用summate()。这是最终版本:

function multiply1() {
    var extend1 = 1;                                           // <--changed here
    for (var i=1; i <= 2; i++) {
        var id = "1_value"+i;
        extend1 = extend1 * document.getElementById(id).value; // <--changed here
    }
    document.getElementById("extend1").value = extend1;
    summate();                                                 // <--changed here
}

这是一个包含拟议更改的演示:http: //jsfiddle.net/zNFV8/

于 2013-05-26T06:09:34.690 回答
0

我有一些可能有帮助的代码。它适用于我的本地盒子,但我无法让它在 jsfiddle 中工作:/

HTML 代码

<label for = "price"> Price </label>
<input name="price" type = "text" id="price" />

<br />

<label for = "quantity"> Quantity </label>
<input name="quantity" type = "text" id="quantity" />

<br />

<label for = "total"> Total</label>  
<input name ="total" type = "text" id = "total" />

Javascript

document.getElementById("quantity").setAttribute("onkeyup", 'calculateTotal()');
document.getElementById("price").setAttribute("onkeyup", 'calculateTotal()');

function calculateTotal() {
  var price = parseFloat(document.getElementById("quantity").value);
  var quantity = parseFloat(document.getElementById("price").value);

if (price * quantity == parseFloat(price * quantity))
    document.getElementById("total").value = price * quantity;
else
    document.getElementById("total").value = '';
}

CSS

 label {width: 100px;  float: left;}
于 2013-05-26T06:08:55.753 回答