Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择框值计算_Php_Javascript - Fatal编程技术网

Php 选择框值计算

Php 选择框值计算,php,javascript,Php,Javascript,我想在selectbox值之间进行计算。我的代码的问题是,计算的第一部分只给了我0,这是主板值Quantity。第二部分为作品细部,对作品数量进行了梳理。我的公式是motherbord*数量+底盘*数量 这是我的密码: function calculate() { var parsedMotherboard = parseFloat(document.calcform.Motherboard.value || 0); var parsedQuantity = parseFloat

我想在selectbox值之间进行计算。我的代码的问题是,计算的第一部分只给了我
0
,这是主板值Quantity。第二部分为作品细部,对作品数量进行了梳理。我的公式是
motherbord*数量+底盘*数量

这是我的密码:

function calculate() {
    var parsedMotherboard = parseFloat(document.calcform.Motherboard.value || 0);
    var parsedQuantity = parseFloat(document.calcform.Quantity.value || 0);
    var parsedChassis = parseFloat(document.calcform.Chassis.value || 0);
    var parsedQuantity1 = parseFloat(document.calcform.Quantity1.value || 0);

    document.calcform.total.value = (parsedMotherboard * parsedQuantity + parsedChassis * parsedQuantity1);
}

如果您将代码的格式设置得更整齐,则会有所帮助:

function calculate() { 
    var parsedMotherboard = parseFloat(document.calcform.Motherboard.value || 0);
    var parsedQuantity = parseFloat(document.calcform.Quantity.value || 0); 
    var parsedChassis = parseFloat(document.calcform.Chassis.value || 0); 
    var parsedQuantity1 = parseFloat(document.calcform.Quantity1.value || 0);

    document.calcform.total.value = (parsedMotherboard * parsedQuantity +
                                      parsedChassis * parsedQuantity1);
}
您是否检查过从表单中获取的值是否正确?确保默认选项(我假设第一个选项的值为0)设置了selected属性,以便始终选择一个选项

其他一些提示:

  • 存储对表单的引用,这样更高效,代码更整洁
  • 因为您设置了该值,所以您知道它的格式正确,所以不必使用parseInt,只需使用uary+运算符转换为number即可
  • 个人偏好,但使用较短的变量名,以便更容易使用
  • 我不明白为什么需要| | 0。如果用户没有选择某个内容,默认值不是0吗
  • 以下是更新版本:

    function calculate() {
        var form = document.calcform;
        var mb = +form.Motherboard.value;
        var mbQty  = +form.Quantity.value; 
        var ch = form.Chassis.value; 
        var chQty = form.Quantity1.value;
    
        form.total.value = mb*mbQty + ch*chQty;
    }
    
    因为每个字符串值都涉及乘法,所以不需要显式转换为数字,这将作为乘法的结果发生,所以您可以编写:

    function calculate() { 
        var form = document.calcform;
        form.total.value = form.Motherboard.value * form.Quantity.value + 
                           form.Chassis.value * form.Quantity1.value;
    }
    
    用jQuery做它

    $('#selectbox1').change(function() {
             // do ajax if you want or store 
             var x = $('#selectbox1').attr('value'); // or you can use this.value
             // and so on
    });
    

    并总结其他选择框

    您所说的“第一部分”和“第二部分”是什么意思?如果变量赋值给你0,我不明白你怎么能期望total.value也不是0。第一部分是主板值*数量,它在计算中给我一个“0”。公式的第二部分是机箱值*数量,它工作正常。主板值是一个数字吗?添加警报消息以检查每个字段的确切值以及是否为数字。