Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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
Jquery 防止值更改为NaN_Jquery_Html - Fatal编程技术网

Jquery 防止值更改为NaN

Jquery 防止值更改为NaN,jquery,html,Jquery,Html,关于使用JQuery的总div,我遇到了一个问题 实际上,当单击+或-按钮时,这个div会更改值,这实际上效果很好 我这里的问题是,当我将一个值放大后“重置”为0时,一旦这个值变为0,我的总数就等于NaN,我希望它保持在0,以继续计算其他值的总和 window.onload=function(){ var id=新数组(); $('input')。每个(函数(){ id.push($(this.attr(“id”)); }); var合计=0; $('.add')。单击(函数(){ var数量

关于使用JQuery的总div,我遇到了一个问题

实际上,当单击+或-按钮时,这个div会更改值,这实际上效果很好

我这里的问题是,当我将一个值放大后“重置”为0时,一旦这个值变为0,我的总数就等于NaN,我希望它保持在0,以继续计算其他值的总和

window.onload=function(){
var id=新数组();
$('input')。每个(函数(){
id.push($(this.attr(“id”));
});
var合计=0;
$('.add')。单击(函数(){
var数量、idprev、价格、tot;
if($(this.prev().val()<99){
$(this.prev().val(+$(this.prev().val()+1);
quant=($(this.prev().val());
idprev=($(this.prev().attr('id')-1);
价格=$(“#”+idprev).val();
tot=数量*价格;
$(“#result”+idprev.html(tot.toFixed(2)+“€”);
对于(变量i=0;i0){
if($(this).next().val()>0)
$(this.next().val(+$(this.next().val()-1);
quant=($(this.next().val());
idprev=idprev=($(this).next().attr('id')-1);
价格=$(“#”+idprev).val();
tot=数量*价格;
$(“#result”+idprev.html(tot.toFixed(2)+“€”);
对于(变量i=0;i

描述
价格
量
第一条
2.50€
-
+
第二条
1.00€
-
+
第三条
3.80€
-
+
第四条
1.00€
-
+
试试:

$("#total").html("Total : " + (+total || 0).toFixed(2) + "€");

此代码将变量total转换为带+号的数字,如果为null或带| |逻辑or的NaN,则替换为0。这样,toFixed()方法总是有一个数字要处理。

好的,多亏了empiric,我实际上解决了我的问题,下面是我所做的:

for (var i = 0; i < ids.length; i++) {
            if (ids[i]%2) {
                if(quant != 0){
                    total = total-(tot/quant);
                    $("#total").html("Total : "+total.toFixed(2)+"€");
                }
                else {
                    total = total-(quant*1+price);
                    $("#total").html("Total : "+total.toFixed(2)+"€");
                }
            }
            else {
                return false;
            }

        }
for(变量i=0;i
我阻止quant go到达0以防止除以0,然后添加了一个条件以从我的总数中删除一次价格


谢谢大家的帮助:)

正如其他人所指出的,问题是,当行总数和数量都为零时,您将被零除

然而,您应该注意到,您的解决方案比需要的复杂得多,并且导致问题的部门是完全冗余的

通过删除惟一的
id
属性(这消除了对循环/数组和模运算符的需要)以及在所有元素上使用公共类,可以使逻辑干涸,并使其更具可扩展性。试试这个:

window.addEventListener('load',function(){
$('.change quantity')。单击(函数(){
var金额=$(此).data('金额');
var$quantity=$(this).sibbines('.quantity').val(函数(i,v){
v=+v | | 0;
返回数学最大值(0,v<99&&v>=0?v+金额:v);
});
updateRowTotal($quantity.closest('tr'));
updateOverallTotal();
});
函数updateRowTotal($row){
$row.find('.result').text(函数(){
返回(++row.find('input.quantity').val()| | 0)*(++row.find('input.price').val()| | 0)).toFixed(2)+'€';
});
}
函数updateOverallTotal(){
var合计=0;
$('.result')。每个(函数(){
total+=parseFloat($(this).text())| | 0;
});
$('#total').text(total.toFixed(2)+'€');
}
});

0.00€
描述
价格
量
第一条
2.50€
-
+
第二条
1.00€
-
+
第三条
3.80€
-
+
第四条
1.00€
-
+

如果将单个值(作为单个行)以及最终结果打印到控制台,会发生什么情况?其中一个可能不是字符串或数字。每个值都以数字形式打印,很明显,这与我试图执行
total=total-(tot/quant)时的情况类似和推送-当总数为1时,总数重置为0,然后值变为NaN。
total=total-(tot/quant)是一个问题,当数量达到0时查看该公式时,您执行:
total=2.5-(0/0)
这是一个被零除的除法,不允许重复