使用jquery/javascript的收费选项';数学';逻辑

使用jquery/javascript的收费选项';数学';逻辑,javascript,jquery,Javascript,Jquery,我正在尝试实现一个广告系统,它将根据用户的喜好向用户收费。默认情况下,如果用户没有选择任何选项,他们的广告将显示在所有设备上。我只会在他们选择特定设备时向他们收费 如果用户选择移动,它将显示“ios”、“android”和“windows phone”复选框。每个选项为1美元。因此,如果用户选择移动和iOS,将收取2美元,以此类推。如果用户选择所有选项,将是0.00美元,因为默认情况下,他们的广告将显示在所有设备上,我不收取任何费用 另外,最后一个条件是:如果我点击“手机”,它会显示“ios”、

我正在尝试实现一个广告系统,它将根据用户的喜好向用户收费。默认情况下,如果用户没有选择任何选项,他们的广告将显示在所有设备上。我只会在他们选择特定设备时向他们收费

如果用户选择移动,它将显示“ios”、“android”和“windows phone”复选框。每个选项为1美元。因此,如果用户选择移动和iOS,将收取2美元,以此类推。如果用户选择所有选项,将是0.00美元,因为默认情况下,他们的广告将显示在所有设备上,我不收取任何费用

另外,最后一个条件是:如果我点击“手机”,它会显示“ios”、“Android”和“Windows Phone”,如果我选择其中一个,它就不会再增加1美元。 例如:“手机”将是1美元,如果我选择“ios”,它也将是1美元。但如果我选择“ios”和“安卓”,那将是2美元

我自己编写的,它似乎不像我想要的那样工作,需要你的帮助

以下是我编写的部分工作代码:

HTML


如果勾选了所有选项,则不会将美元重置为0

将onclick函数替换为:

function computeTotal() {
    // get all mobile
    var mobileList = document.getElementsByName("mobile"),
        chkCount = 0,
        i = 0,
        len = mobileList.length,
        totalMobile = 0;
    for (; i < len; i ++) {
        if (mobileList[i].checked) {
            chkCount += 1;
        }
    }
    totalMobile = chkCount;

    // get all pc
    var pcList = document.getElementsByName("pc"),
        totalPC = 0;
    // reset value of these variables
    chkCount = 0;
    i = 0;
    len = pcList.length;
    for (; i < len; i ++) {
        if (pcList[i].checked) {
            chkCount += 1;
        }
    }
    totalPC = chkCount;


    // compute total
    var total = 0;
    if (totalMobile == mobileList.length && totalPC == pcList.length) {
        // total is zero since all device is selected
    } else if (totalMobile == mobileList.length && totalPC != pcList.length) {
        total = totalPC;
    } else {
        total = totalMobile + totalPC;
    }

    // display
    document.getElementById("total").value = total;
}
函数computeTotal(){
//移动
var mobileList=document.getElementsByName(“移动”),
chkCount=0,
i=0,
len=移动列表长度,
totalMobile=0;
对于(;i

另外,在设备的复选框中添加一个名称属性。对于pc设备,名称值为pc,对于移动设备,移动

将onclick功能替换为:

function computeTotal() {
    // get all mobile
    var mobileList = document.getElementsByName("mobile"),
        chkCount = 0,
        i = 0,
        len = mobileList.length,
        totalMobile = 0;
    for (; i < len; i ++) {
        if (mobileList[i].checked) {
            chkCount += 1;
        }
    }
    totalMobile = chkCount;

    // get all pc
    var pcList = document.getElementsByName("pc"),
        totalPC = 0;
    // reset value of these variables
    chkCount = 0;
    i = 0;
    len = pcList.length;
    for (; i < len; i ++) {
        if (pcList[i].checked) {
            chkCount += 1;
        }
    }
    totalPC = chkCount;


    // compute total
    var total = 0;
    if (totalMobile == mobileList.length && totalPC == pcList.length) {
        // total is zero since all device is selected
    } else if (totalMobile == mobileList.length && totalPC != pcList.length) {
        total = totalPC;
    } else {
        total = totalMobile + totalPC;
    }

    // display
    document.getElementById("total").value = total;
}
函数computeTotal(){
//移动
var mobileList=document.getElementsByName(“移动”),
chkCount=0,
i=0,
len=移动列表长度,
totalMobile=0;
对于(;i

另外,在设备的复选框中添加一个名称属性。对于pc设备,名称值是pc,对于移动设备,移动

默认情况下选择所有复选框是否更有意义?为什么jQuery的使用不一致?@blex,如果全部选中,如果用户只需要一个选项,则必须取消选中大部分复选框。默认情况下选择所有复选框是否更有意义?为什么jQuery的使用不一致?@blex,如果选中了所有复选框,如果用户只需要一个选项,则必须取消选中大部分复选框。我做了一些修改。但是,如果选中移动设备和pc,则总数也必须为0。另一个条件是,如果用户点击手机和ios,总数只有“1”。用户选择的第一个操作系统选项不计算在内。我已经使用您的代码更新了一个新的JSFIDLE。我做了一些修改。但是,如果选中移动设备和pc,则总数也必须为0。另一个条件是,如果用户点击手机和ios,总数只有“1”。用户选择的第一个操作系统选项不计算在内。我已经使用您的代码更新了一个新的JSFIDLE。
function computeTotal() {
    // get all mobile
    var mobileList = document.getElementsByName("mobile"),
        chkCount = 0,
        i = 0,
        len = mobileList.length,
        totalMobile = 0;
    for (; i < len; i ++) {
        if (mobileList[i].checked) {
            chkCount += 1;
        }
    }
    totalMobile = chkCount;

    // get all pc
    var pcList = document.getElementsByName("pc"),
        totalPC = 0;
    // reset value of these variables
    chkCount = 0;
    i = 0;
    len = pcList.length;
    for (; i < len; i ++) {
        if (pcList[i].checked) {
            chkCount += 1;
        }
    }
    totalPC = chkCount;


    // compute total
    var total = 0;
    if (totalMobile == mobileList.length && totalPC == pcList.length) {
        // total is zero since all device is selected
    } else if (totalMobile == mobileList.length && totalPC != pcList.length) {
        total = totalPC;
    } else {
        total = totalMobile + totalPC;
    }

    // display
    document.getElementById("total").value = total;
}