javascript - 怎样让价格重新叠加?
阿神
阿神 2017-04-11 12:07:44
[JavaScript讨论组]

一个价格变量,下面若干个按钮,分别代表不同套餐。 点击叠加切换套餐价格?
现在每次点击并不会把上次套餐的价格清掉。

100

套餐:
套餐一
套餐二
套餐三
套餐四
var price= $('#price');
$(".btn").each(function () {
    var sum = parseInt(price.text()); //总价
    var _that = $(this);
    var getPrice = parseInt(_that.attr('data-price')); //获取套餐价格
    _that.click(function () {
      $(this).addClass('active').siblings().removeClass('active');
      sum += getPrice;
      price.text(sum)
    })
  });
阿神
阿神

闭关修行中......

全部回复(2)
阿神

有点没太明白题主的意思、

需求再细化一下吧、

是类似复选的几个按钮吗?可以同时选多个套餐、再次点击就取消套餐是吗?

提供思路:

首先这个100是不固定的、不知道从哪来的

然后后面的四个套餐根据你的评论说法是单选

因为你的price可能会因为其他地方重新改变、所以不好做固定值去做计算

那最简单的方法就是在加新价格之前、从总价中减去上一个套餐的价格

var sum = parseInt(price.text()); //总价

_that.click(function () {
  var tmp = parseInt($(".active").attr('data-price'))
  $(this).addClass('active').siblings().removeClass('active');
  sum = sum - tmp + getPrice
  price.text(sum)
})

就是在active还未改变之前拿到上一个的值、做了减法之后给新的active

也可以不用上面的办法、

用两个变量控制价格、你现在的price是一个价格、再新定义一个price、不过这两个price的变化都要考虑进去

阿神

最好是每次点击都把总价清0重新计算一下。

这样业务多的时候不会很乱

做一个类似这样的价格存放类

function PriceCalc(initPrice) {
    this.initPrice = initPrice;
    this.addServer = {
        count : 1,  // 根据需要添加可能会出现价格变化的东西
    };
    this.setPrice = function(name, price) {
        if(this.addServer[name] === undefined) {  // 添加没有的项返回false
            return false;
        }
        this.addServer[name] = price;
        return this;
    }
    this.getPrice = function() {
        var count = this.initPrice;
        var asr = this.addServer;
        for(var i in asr) {
          count += asr[i];
        }
        return count;
    }
}
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号