检查Javascript中的总和大于数字

时间:2014-03-12 13:16:10

标签: javascript if-statement

我的脚本计算页面上所选产品的总价值,并返回跨度中的总计。我已经更改了脚本,以便当产品的总值大于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">');   

} 

}

3 个答案:

答案 0 :(得分:3)

因为你从未删除过它而且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('');
 }

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

在这种情况下问题不是toFixed(2),但要小心。在第一次总计&gt;之后,您从未清除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数据元素。
  • 您可以执行类似toggle()的操作,而不是使用html()功能,以保持代码更清晰,并将HTMLJS代码分开。