Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止复选框循环和单选按钮循环创建两个单独的价格总计_Javascript_Html - Fatal编程技术网

Javascript 如何防止复选框循环和单选按钮循环创建两个单独的价格总计

Javascript 如何防止复选框循环和单选按钮循环创建两个单独的价格总计,javascript,html,Javascript,Html,我有一个用于复选框的查询选择器,它工作得很好,我为单选按钮复制了它,但我遇到了一个问题,它们都保留着单独的总计。我试图将totalPrice变量从这两个变量中取出,放在外部以便共享,但这造成了无法从未选中的复选框和单选按钮中删除价格的问题 这是我当前的错误代码: const form=document.getElementById('bookingForm'); const total=document.getElementById('total'); document.getElementB

我有一个用于复选框的查询选择器,它工作得很好,我为单选按钮复制了它,但我遇到了一个问题,它们都保留着单独的总计。我试图将totalPrice变量从这两个变量中取出,放在外部以便共享,但这造成了无法从未选中的复选框和单选按钮中删除价格的问题

这是我当前的错误代码:

const form=document.getElementById('bookingForm');
const total=document.getElementById('total');
document.getElementById(“bookingForm”).addEventListener(“单击”,函数(e){
如果(e.target.name==“event[]”){
让totalprice=0;
[…document.querySelectorAll('input[data price][type=checkbox]'))].forEach(函数(框){
如果(复选框){
totalprice+=+box.dataset.price;
}
})
document.querySelector(“[name=total]”)。value=totalprice.toFixed(2);
}
})
document.getElementById(“bookingForm”).addEventListener(“单击”,函数(e){
如果(e.target.name==“交付”){
让totalprice=0;
[…document.querySelectorAll('input[data price][type=radio]'))].forEach(函数(框){
如果(复选框){
totalprice+=+box.dataset.price;
}
})
document.querySelector(“[name=total]”)。value=totalprice.toFixed(2);
}
})

选择事件
事件1
10.50
活动2
5
总价
总价


只有一个事件处理程序和一个循环

如果只有需要循环的元素的数据price,那么可以更改

[...document.querySelectorAll('input[data-price][type=checkbox], input[data-price][type=radio]')].forEach(function(box) {

我只是想知道为什么你只有一台收音机——它不能被取消选择。为什么不加一个复选框呢

const form=document.getElementById('bookingForm');
const total=document.getElementById('total');
表单。添加的列表器(“单击”,函数(e){
如果(e.target.name==“事件[]”| | e.target.name===“交付”){
让totalprice=0;
[…document.querySelectorAll('input[data price][type=checkbox],input[data price][type=radio]])。forEach(函数(框){
如果(复选框){
totalprice+=+box.dataset.price;
}
})
document.querySelector(“[name=total]”)。value=totalprice.toFixed(2);
}
})

选择事件
事件1
10.50
活动2
5
总价
总价


在我的示例中,实际上有两个单选按钮我忽略了第二个。哎呀。此外,这也完全符合我的要求,只是它只在事件发生更改时更新。是否有办法使其在单选按钮切换时也能更新?很抱歉,我的示例中没有包含一个。ThanksIt在任何收音机上的点击或bookingForm中的复选框上工作,只要它们被命名为event[]或deliveryah,我刚刚错误地命名了一个变量。谢谢你的帮助:)
[...document.querySelectorAll('input[data-price]')].forEach(function(box) {