繁体   English   中英

检查Javascript中的总和是否大于数字

[英]Checking total sum in Javascript is greater than a number

我的脚本计算页面上选定产品的总价值,并返回跨度的总和。 我更改了脚本,以便当产品的总值大于2000时,第二个跨度与按钮一起出现,但是当值下降到2000以下时,该按钮仍然显示。

function calctotal(){
var total = 0;

    $(".calc").each(function(){
    var a=this.value * $(this).attr('data-price');
    total+=parseFloat(a);


});
$( "span.total" ).html('Your furniture total is £' + total.toFixed(2) );

if (total.toFixed(2) > 2000) {

$( "span.basketbutton" ).html('<input type="submit" name="submit" value="Add Furniture selections to Basket" style="margin-left:40px">');   

} 

}

因为您从未删除过它,并且toFixed返回了可能导致意外输出的字符串,所以将其删除

尝试:

if (total > 2000) {    
    $( "span.basketbutton" ).html('<input type="submit" name="submit" value="Add Furniture selections to Basket" style="margin-left:40px">');      
 } 
else{
  $( "span.basketbutton" ).html('');
 }

您需要if语句的else部分,当总数下降到2000以下时,应在其中删除按钮。

顺便说一下, toFixed(2)是不必要的,因为它将会将total的截断值转换为字符串。 您将要进行数值比较: total > 2000

问题不是这种情况下的toFixed(2) ,但要小心。 第一次> 2000以后,您再也不会清除span.basketbutton 。因此,如果未清除,则需要清除span.backetbutton内的HTML,因为可以使用html()empty()函数。

calcTotal = function(){
    var total,a = 0;

    $('.calc').each(function(i, el) {
        a = el.val() * el.data('price');
        total+=parseFloat(a);
    });

    $( "span.total" ).html('Your furniture total is &pound;' + total.toFixed(2) );

    if (total > 2000) {
        $( "span.basketbutton" ).html('<input type="submit" name="submit" value="Add Furniture selections to Basket" style="margin-left:40px">');   
    }
    else if("span.basketbutton").children().length>0){
        $(this).empty();
    }
};

附加功能:

  • 如果您正在编写jQuery,请避免使用纯Javascript;)
  • 使用data()通过jQuery访问HTML5数据元素。
  • 除了使用html()函数之外,您可以在这种情况下执行toggle()之类的操作,以保持代码更整洁,并将HTMLJS代码分开。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM