Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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
Javascript jQuery从变量返回NaN和[object]_Javascript_Jquery_Forms_Function_Nan - Fatal编程技术网

Javascript jQuery从变量返回NaN和[object]

Javascript jQuery从变量返回NaN和[object],javascript,jquery,forms,function,nan,Javascript,Jquery,Forms,Function,Nan,我的脚本在运行时遇到了一些问题。我的脚本计算订单数量和每个订单的权重。当按下“新行”按钮时,我的表单实际上是由javascript创建的。我试图做到这一点,只要填写了3个值(项目数量、盒子中的项目数量、每个订单的盒子数量),它就会自动给出订单总数。此外,当给定单个项目的重量时,它会给出订单的总重量。所有这些都发生在使用jquery的keyup上。我只需要javaScript部分的帮助。后来我用AJAX处理表单,一切正常,但当我试图实现它时,它坏了 每当我使用alert()查看代码分配给updat

我的脚本在运行时遇到了一些问题。我的脚本计算订单数量和每个订单的权重。当按下“新行”按钮时,我的表单实际上是由javascript创建的。我试图做到这一点,只要填写了3个值(项目数量、盒子中的项目数量、每个订单的盒子数量),它就会自动给出订单总数。此外,当给定单个项目的重量时,它会给出订单的总重量。所有这些都发生在使用jquery的keyup上。我只需要javaScript部分的帮助。后来我用AJAX处理表单,一切正常,但当我试图实现它时,它坏了

每当我使用alert()查看代码分配给updateForm()函数的值时,我会得到alert($totalitems)->[object object object]和alert($weightperpal)->NaN的值。谁能帮我解决这个问题?这是我的密码:

HTML:

添加行
JavaScript:

$("#addLine").click(function(e){
    e.preventDefault();
    lineNum++;

    var cont = '<div class="control-group">'+
        '<label class="control-label">Total # of items</label>'+
        '<div class="controls">'+
        '<input type="text" placeholder="" class="m-wrap medium orderField" name="totalitems'+lineNum+'" id="totalitF" no="'+ lineNum +'"/>'+
        '<span class="help-inline" style="font-size:10px; font-style:italic;">Not mandatory</span>'+
        '</div>'+
        '</div>'+
        '<div class="control-group">'+
        '<label class="control-label">Items per box</label>'+
        '<div class="controls">'+
        '<input type="text" placeholder="0" class="m-wrap medium orderField" name="ipb'+lineNum+'" id="itemspbF" no="'+ lineNum +'"/>'+
        '<span class="help-inline" style="font-size:10px; font-style:italic;">#</span>'+
        '</div>'+
        '</div>'+
        '<div class="control-group">'+
        '<label class="control-label">Boxes per order</label>'+
        '<div class="controls">'+
        '<input type="text" placeholder="0" class="m-wrap medium orderField" name="bpp'+lineNum+'" id="boxesppF" no="'+ lineNum +'"/>'+
        '<span class="help-inline" style="font-size:10px; font-style:italic;">#</span>'+
        '</div>'+
        '</div>'+
        '<div class="control-group">'+
        '<label class="control-label">Weight per Item</label>'+
        '<div class="controls">'+
        '<input type="text" placeholder="0" class="m-wrap medium orderField" name="wpi'+lineNum+'" id="weightpiF" no="'+ lineNum +'"/>'+
        '<span class="help-inline" style="font-size:10px; font-style:italic;">#</span>'+
        '</div>'+
        '</div>'+
        '<div class="control-group">'+
        '<label class="control-label">Total number of Orders</label>'+
        '<div class="controls">'+
        '<input type="text" placeholder="" class="m-wrap medium orderField" name="pallets'+lineNum+'" id="palletsF" no="'+ lineNum +'"/>'+
        '<span class="help-inline" style="font-size:10px; font-style:italic;"># of pallets</span>'+
        '</div>'+
        '</div>'+
        '<div class="control-group">'+
        '<label class="control-label">Weight per order</label>'+
        '<div class="controls">'+
        '<input type="text" placeholder="" class="m-wrap medium orderField" name="wpp'+lineNum+'" id="weightppF" no="'+ lineNum +'"/>'+
        '<span class="help-inline" style="font-size:10px; font-style:italic;">Total number of boxes</span>'+
        '</div>'+
        '</div>'+
        '</div>';

    $(document).on('keyup','.weightpiF',function(){
        var valueField = $(this).attr('no');
        updateFormRoe(valueField);
    });
    $(document).on('keyup','.weightppF',function(){
        var valueField = $(this).attr('no');
        updateFormRoe(valueField);

    });
    $(document).on('keyup','.itemspbF',function(){
        var valueField = $(this).attr('no');
        updateFormRoe(valueField);
    });
    $(document).on('keyup','.boxesppF',function(){
        var valueField = $(this).attr('no');
        updateFormRoe(valueField);
    });

    function updateFormRoe(number){
        alert(number);
        var $totalitems = $('#totalitF'+number);
        alert($totalitems);
        var $itemspb = $('#itemspbF'+number).val();

        var $boxespp = $('#boxesppF'+number).val();

        var $weightperitem = $('#weightpiF'+number).val();

        var $itemsinpallet = $itemspb * $boxespp;

        var $totalpals = $totalitems / $itemsinpallet;

        var $weightperpal = ($itemsinpallet) * $weightperitem;
        alert($weightperpal);
        if($totalitems !== '' && $itemspb !== '' && $boxespp !== ''){
            if($totalpals == Infinity){
                $('#palletsF'+number).val('0');
            }else{
                $('#palletsF'+number).val($totalpals);  
            }

            $('#weightppF'+number).val($weightperpal);
        }
    }
$(“#添加行”)。单击(函数(e){
e、 预防默认值();
lineNum++;
var cont=''+
“项目总数”+
''+
''+
“非强制性”+
''+
''+
''+
“每箱物品”+
''+
''+
'#'+
''+
''+
''+
“每个订单的包装箱”+
''+
''+
'#'+
''+
''+
''+
“每件物品的重量”+
''+
''+
'#'+
''+
''+
''+
“订单总数”+
''+
''+
#托盘"+
''+
''+
''+
“每订单重量”+
''+
''+
“盒子总数”+
''+
''+
'';
$(document).on('keyup','.weightpiF',function()){
var valueField=$(this.attr('no');
updateFormRoe(valueField);
});
$(document).on('keyup','.weightppF',function(){
var valueField=$(this.attr('no');
updateFormRoe(valueField);
});
$(document).on('keyup','.itemspbF',function(){
var valueField=$(this.attr('no');
updateFormRoe(valueField);
});
$(document).on('keyup','.boxesppF',function(){
var valueField=$(this.attr('no');
updateFormRoe(valueField);
});
函数updateFormRoe(编号){
警报(编号);
变量$totalitems=$(“#totalitF”+数字);
警报($totalitems);
var$itemspb=$('#itemspbF'+number).val();
var$boxespp=$('#boxesppF'+number).val();
var$weightperitem=$('#weightpiF'+number).val();
var$itemsinplallet=$itemspb*$boxesspp;
var$totalpals=$totalitems/$itemsinpallet;
var$weightperpal=($itemsinpallet)*$weightperitem;
警报($weightperpal);
如果($totalitems!=''&&$itemspb!=''&&$boxespp!=''){
如果($totalpals==无穷大){
$('#palletsF'+编号).val('0');
}否则{
$(“#palletsF”+数字).val($totalpals);
}
$('#weightppF'+数字).val($weightperpal);
}
}

提前感谢!

$(“#totalitF'+number)
这样的选择器都不起作用,因为您没有在ID中添加数字。而不是:

id="totalitF" no="'+ lineNum +'"/>'
应该是:

id="totalitF'+ lineNum +'" data-no="'+ lineNum +'"/>'
您不应该创建自己的属性。如果要向元素添加其他属性,请使用
data-
attributes。然后在jQuery中,您可以通过以下方式访问此属性:

$(this).data('no')

要获取值,请在其他函数中使用此函数代替
$(this).attr('no')

记住在
parseFloat(…)
中包装
$(…).val()
,以便将值转换为数字。也可以使用
console.log()
而不是
alert()
要查看对象中的内容,我应该去掉输入中额外的“no”属性,只需使用id=“totalitF'+lineNum+'”/>动态生成对象。事实上,我看到您在其他函数中使用了
.attr('no')
,因此您需要这两个属性。请参阅我更新的答案。
$(this).data('no')