javascript添加select和checkbox值///获取负数
我需要能够让用户从选择下拉列表中选择一个账单条款,然后选择复选框添加到总数中。它似乎在JSFIDLE上运行得比较好,但是在我的网站上,有些情况下,选中所有复选框,然后通过选择“选择账单期限”将总数重置为0,然后取消选中所有选项,结果会是负数。有人有什么建议吗?即使勾选和取消勾选选项也会开始出现负数 HTML:javascript添加select和checkbox值///获取负数,javascript,jquery,html,css,checkbox,Javascript,Jquery,Html,Css,Checkbox,我需要能够让用户从选择下拉列表中选择一个账单条款,然后选择复选框添加到总数中。它似乎在JSFIDLE上运行得比较好,但是在我的网站上,有些情况下,选中所有复选框,然后通过选择“选择账单期限”将总数重置为0,然后取消选中所有选项,结果会是负数。有人有什么建议吗?即使勾选和取消勾选选项也会开始出现负数 HTML: 计费周期: 选择计费期限 12个月:300美元/月(节省20%) 1个月:350美元/月。 额外功能(50美元/月): 一款图片分享应用 审查现场监测 谷歌+ LinkedIn 品特烈
计费周期:
选择计费期限
12个月:300美元/月(节省20%)
1个月:350美元/月。
额外功能(50美元/月):
一款图片分享应用
审查现场监测
谷歌+
LinkedIn
品特烈
四方
Tumblr
广告
您的卡现在将收取0美元,此后您的订阅每月将收取0美元。您可以随时取消或更改计划。
我的javascript:
var select = document.getElementById('billing-price');
select.addEventListener('change', updatePrice, false);
var price = 0;
var additional = 0;
function updatePrice(e) {
price = parseFloat(select.value);
document.getElementById('payment-total').innerText = price + additional;
if (price == select.options[2].value){
document.getElementById('payment-rebill').innerText = 0 + additional;
} else {
document.getElementById('payment-rebill').innerText = price + additional;
}
}
var inputs = document.getElementsByClassName('sum'),
total = document.getElementById('payment-total');
total2 = document.getElementById('payment-rebill');
for (var i=0; i < inputs.length; i++) {
inputs[i].onchange = function() {
var add = this.value * (this.checked ? 1 : -1);
additional += add
total.innerHTML = price + additional
total2.innerHTML = price + additional
}
}
var select=document.getElementById('billing-price');
select.addEventListener('change',updatePrice,false);
var价格=0;
附加var=0;
函数更新价格(e){
price=parseFloat(选择.value);
document.getElementById('payment-total')。innerText=价格+附加;
if(price==select.options[2].value){
document.getElementById('payment-rebill')。innerText=0+附加;
}否则{
document.getElementById('payment-rebill')。innerText=价格+附加;
}
}
var inputs=document.getElementsByClassName('sum'),
总计=document.getElementById('payment-total');
total2=document.getElementById('payment-rebill');
对于(变量i=0;i
正在工作的JSFIDLE:我的站点(工作不正常):
我正在为复选框使用javascript文件,以使它们具有更好的外观。我担心这可能会影响我的javascript代码中复选框的总和。负值是由于未选中输入导致的,因此这一行中的
this.checked
var add = this.value * (this.checked ? 1 : -1);
始终为false,导致附加值为负值
将this.checked
更改为this.parentNode.className.split(“”)。indexOf(“checked”)>-1可能会有所帮助
for (var i=0; i < inputs.length; i++) {
inputs[i].onchange = function() {
var add = this.value * (this.parentNode.className.split(" ").indexOf("checked") > -1 ? 1 : -1);
additional += add
total.innerHTML = price + additional
total2.innerHTML = price + additional
}
}
for(变量i=0;i-1?1:-1);
附加+=添加
total.innerHTML=价格+附加
total2.innerHTML=价格+附加
}
}
问题似乎是,这个。选中的
总是错误的,除非您第一次选中该框。也许flatui-checkbox.js会影响这一点?您没有在小提琴中加载它。行total=document.getElementById('payment-total')代码>应该以,
结尾,而不是代码>。当前,total2
是一个隐式全局变量。使用或可以帮助发现这些类型的错误。您似乎只是在计算客户端的总成本,没有任何复选框具有可在后端验证的唯一名称。这是一个错误,可能会导致损失很多钱。在提交表单之前,它将是我在客户端想要的任何价格的值属性。@UselessCode我没有在网站上做任何后端操作。我只是想让前端功能正常。感谢您的关注。这个类名与flatui-checkbox.js库相关吗?是的,看起来像是库创建元素作为输入的父元素,并且已经“选中”了类名,但真正的问题是库显然覆盖了对checkbox元素本身的更改。第一次勾选此框时,this.checked
为真,但稍后再次勾选时为假。
for (var i=0; i < inputs.length; i++) {
inputs[i].onchange = function() {
var add = this.value * (this.parentNode.className.split(" ").indexOf("checked") > -1 ? 1 : -1);
additional += add
total.innerHTML = price + additional
total2.innerHTML = price + additional
}
}