Javascript 单选按钮费用结算

Javascript 单选按钮费用结算,javascript,jquery,html,Javascript,Jquery,Html,我有三个计算费用的单选按钮。当您单击第一个单选按钮时,它会有一个带有复选框的下拉列表,如果您单击复选框,它会添加$3。。如果用户意识到这是一个错误,并且没有松开复选框并单击另一个单选按钮,则在至少单击两次单选按钮之前,不会从总额中删除$3 前两个单选按钮为78.25,第三个为88.25。单击第一个单选按钮78.25,然后复选框将变为81.25,然后假装您的用户改变了主意,然后单击第二个单选按钮,当您单击时,它应将其变回78.25。但是它没有,它保持81.25如果你点击第三个单选按钮,它最终会意识

我有三个计算费用的单选按钮。当您单击第一个单选按钮时,它会有一个带有复选框的下拉列表,如果您单击复选框,它会添加$3。。如果用户意识到这是一个错误,并且没有松开复选框并单击另一个单选按钮,则在至少单击两次单选按钮之前,不会从总额中删除$3

前两个单选按钮为78.25,第三个为88.25。单击第一个单选按钮78.25,然后复选框将变为81.25,然后假装您的用户改变了主意,然后单击第二个单选按钮,当您单击时,它应将其变回78.25。但是它没有,它保持81.25如果你点击第三个单选按钮,它最终会意识到这一点并自我纠正

我已设置为在选中另一个单选按钮时取消选中复选框,但由于某些原因,费用不会立即更改,并且由于某些原因而延迟。有人能帮忙吗

如果任何人有任何建议或建议,将不胜感激

$(function(){//由我添加
$('#brandnewrv')。单击(函数(){
计算总数();
});
});
函数rvsPrice()
{
var-rvPrice=0;
var theForm=document.forms[“form”];
var brandnewRv=document.getElementById('brandnewRv');
如果(brandnewRv.checked==true)
{
rvPrice=3;
}
退货价格;
}
//设定所有权证明价格
//设置关联数组
var title_prices=新数组();
产权价格[“MCO”]=78.25;
标题价格[“FL标题”]=78.25;
产权价格[“OOS产权”]=88.25;
//所有权证明单选按钮
函数getproofownership()
{  
var所有权证明=0;
//获取对表单id=“表单”的引用
var theForm=document.forms[“form”];
//获取对用户选择的标题的引用名称=所有权”:
var所有权=形式元素[“所有权”];
//这里有4个单选按钮。长度=4
//我们循环浏览每个单选按钮
对于(变量i=0;i

所有权证明
制造商原产地声明 佛罗里达州产权证书 州外产权证书 选择一个月 一月 二月 前进 四月 也许 六月 七月 八月 九月 十月 十一月 十二月 检查是否为全新RV/房车

函数状态下拉列表(所有权){ 如果(所有权=“OOS所有权”){ document.getElementById(“div3”).style.display='block'; document.getElementById(“div4”).style.display='none'; document.getElementById(“div5”).style.display='none'; document.getElementById(“brandnewrv”).checked=false; rvsPrice(); } 否则如果(所有权=“FL标题”){ document.getElementById(“div4”).style.display='block'; document.getElementById(“div3”).style.display='none'; document.getElementById(“div5”).style.display='none'; document.getElementById(“标题状态”)。selectedIndex=0; document.getElementById(“brandnewrv”).checked=false; rvsPrice(); } 否则如果(所有权=“MCO”){ document.getElementById(“div5”).style.display='block'; document.getElementById(“div3”).style.display='none'; document.getElementById(“div4”).style.display='none'; document.getElementById(“标题状态”)。selectedIndex=0; } }
我认为这比需要的复杂得多。我认为单选按钮实际上只需要一个“单击”处理程序来调用“statedropDown”函数的修改版本,而不需要“更改”处理程序。应该更改“statedropDown”函数,以便它在最后调用“calculateTotal()”。这一行引用了titlestates“需要在小提琴中注释掉,因为DOM的这一部分不存在

<label class='radiolabel'>
<input type="radio" name="ownership" required="yes" message="Please select proof of ownership." value="MCO" onclick="statedropDown(this.value)">Manufacturer's Statement of Origin&nbsp;&nbsp;</label>
<label class='radiolabel'>
<input type="radio" name="ownership" value="FL Title" onclick="statedropDown(this.value)">Florida Certificate of Title&nbsp;&nbsp;</label>
<label class='radiolabel'>
<input type="radio" name="ownership" value="OOS Title" onclick="statedropDown(this.value)">Out-of-state Certificate of Title&nbsp;&nbsp;</label>

(我在修补时更改了其他一些小东西,但我认为上面的更改是关键。)

如果要使用jQuery,请使用jQuery。不要使用
document.getElementById('totalPrice');
和类似
onclick=“calculateTotal()的内联事件绑定“
。整个脚本可以大大简化。您的代码调用“rvsPrice()”函数,并且总是忽略返回值。谢谢您的建议,我是一个新手,正在学习。我尊重每一个写代码的人,这是一个学习的过程!!即使是像我刚刚发布的东西也让我花了几个小时的时间思考,你可能会认为它是如此简单!令人悲哀的是,有多少人认为程序员是理所当然的,他们真的能做出惊人的事情@j08691是对的。另外,如果您查看控制台,它会说这一行的
getElementById
为空:
var brandnewRv=document.getElementById('brandnewRv'),不知道为什么。但是如果我使用
$(“#brandnewrv”)
它将返回正确的元素。@MattD JavaScript日期API使用以零为基础的月份。
function statedropDown(ownership) {
    if (ownership == "OOS Title") {
        document.getElementById("div3").style.display = 'block';
        document.getElementById("div4").style.display = 'none';
        document.getElementById("div5").style.display = 'none';
        document.getElementById("brandnewrv").checked = false;
    } else if (ownership == "FL Title") {
        document.getElementById("div4").style.display = 'block';
        document.getElementById("div3").style.display = 'none';
        document.getElementById("div5").style.display = 'none';
        //document.getElementById("titlestates").selectedIndex = 0;
        document.getElementById("brandnewrv").checked = false;
    } else if (ownership == "MCO") {
        document.getElementById("div5").style.display = 'block';
        document.getElementById("div3").style.display = 'none';
        document.getElementById("div4").style.display = 'none';
        //document.getElementById("titlestates").selectedIndex = 0;
    }
    calculateTotal();
}