我的脚本计算页面上所选产品的总价值,并返回跨度中的总计。我已经更改了脚本,以便当产品的总值大于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">');
}
}
答案 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 £' + 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();
}
};
data()
通过jQuery访问HTML5数据元素。html()
功能,以保持代码更清晰,并将HTML
与JS
代码分开。