添加具有多个值的复选框
Adding checkbox with multiple value
我在复选框中有一组书,用户可以选择。每次检查一本书,价格就会加起来。我还需要添加相应的权重。我修改了这个非常有用的例子,但没有用。
<label class="checkbox" for="Checkbox1">
<input value="50" type="checkbox" class="sum" data-toggle="checkbox"> Instagram
</label>
<label class="checkbox">
<input value="50" bweight=".4" type="checkbox" class="sum" data-toggle="checkbox"> Review site monitoring
</label>
<label class="checkbox">
<input value="30" bweight=".2" type="checkbox" class="sum" data-toggle="checkbox"> Google+
</label>
<label class="checkbox">
<input value="20" bweight=".6" type="checkbox" class="sum" data-toggle="checkbox"> LinkedIn
</label>
<div class="card-charge-info">
<span id="payment-total">0</span>
</div>
var inputs = document.getElementsByClassName('sum'),
total = document.getElementById('payment-total');
totwgt = document.getElementById('payment-w');
for (var i = 0; i < inputs.length; i++) {
inputs[i].onchange = function() {
var add = this.value * (this.checked ? 1 : -1);
var add = this.wgt * (this.checked ? 1 : -1);
total.innerHTML = parseFloat(total.innerHTML) + add
totwgt.innerHTML = parseFloat(total1.innerHTML) + add
}
}
这是代码https://jsfiddle.net/u8bsjegk/2/
您的代码中存在几个问题。首先,您在两个位置定义add
变量,一个用于值,另一个用于权重,因此您的计算从此处中断。还要注意,bweight
不是input
元素上的有效属性。要添加您自己的元数据,您应该使用data-*
属性。
试试这个:
var inputs = document.getElementsByClassName('sum'),
totalValue = document.getElementById('payment-total'),
totalWeight = document.getElementById('payment-w');
for (var i = 0; i < inputs.length; i++) {
inputs[i].onchange = function() {
var value = parseFloat(this.value);
var weight = parseFloat(this.dataset.weight);
totalValue.innerHTML = parseFloat(totalValue.innerHTML) + value
totalWeight.innerHTML = parseFloat(totalWeight.innerHTML) + weight
}
}
正如您用jQuery标记这个问题一样,这里有一个的工作实现
var $inputs = $('.sum'),
$totalValue = $('#payment-total'),
$totalWeight = $('#payment-w');
$inputs.change(function() {
var value = parseFloat(this.value);
var weight = parseFloat($(this).data('weight'));
$totalValue.text(function(i, text) {
return parseFloat(text) + value;
});
$totalWeight.text(function(i, text) {
return parseFloat(text) + weight;
});
})
工作示例
您有几个问题:
- 重新声明
add
变量 - 你在
total1
中有错别字,应该是totwgt
- 您没有
payment-w
id的元素 - 应该使用
this.getAttribute('bweight')
而不是this.wgt
https://jsfiddle.net/u8bsjegk/6/
相关文章:
- 如果选中了多个复选框,如何添加事件
- 如何在metrojs中将复选框添加到数据表中
- jqGrid如何将多个复选框添加到一列中
- 使用jquery选中/取消选中复选框添加/删除值
- 使用复选框添加到 JavaScript 中的字符串
- 使用带有javascript的复选框添加/删除多行
- 如何将复选框添加到剑道网格's工具栏
- Jquery Validator为复选框添加方法验证
- Javascript复选框添加值Textarea
- 向每个复选框添加一个eventListener
- 将复选框添加到总数的Javascript函数
- 在angularjs中动态地向复选框添加/移除checked属性
- 如何将动态创建的复选框添加到引导行
- Codeigniter -通过jquery复选框添加多个项目到购物车
- 将复选框添加到jquery mobile中的可折叠列表标题中
- 如何将复选框添加到JQuery Select2插件中
- 将“全选”复选框添加到更新对象数组的复选框列表中
- 将复选框添加到圣杯中的列表
- 如何将复选框添加到 #{{链接到}} 帮助程序中
- 使用 JQuery 将复选框添加到无序列表