带有onInput和onChange指向同一函数的Javascript表单计算器。需要存储onChange吗 背景

带有onInput和onChange指向同一函数的Javascript表单计算器。需要存储onChange吗 背景,javascript,html,forms,input,Javascript,Html,Forms,Input,我有一个表格,我正在建设,将作为一个价格计算器的功能。我把它弄得一团糟太久了,现在我被卡住了 基本上,当用户输入两个(实际上是三个)变量时,它将产生三个不同的输出 三个输入: 售票 票价 谁付费用 三项产出: 他们付钱 你付钱 你得到报酬(净收入) 这个公式相当简单 (已售出门票)x(门票成本)=底价(如果您愿意,可以称之为总收入) (售出门票数量x$1)+(底价/100)=费用(基本上每张门票1美元+底价的1%) 根据“谁支付费用”变量,可以得到三个输出。要么他们付底价加手续费,要么他

我有一个表格,我正在建设,将作为一个价格计算器的功能。我把它弄得一团糟太久了,现在我被卡住了

基本上,当用户输入两个(实际上是三个)变量时,它将产生三个不同的输出

三个输入:

  • 售票
  • 票价
  • 谁付费用
三项产出:

  • 他们付钱
  • 你付钱
  • 你得到报酬(净收入)
这个公式相当简单

(已售出门票)x(门票成本)=底价(如果您愿意,可以称之为总收入)

(售出门票数量x$1)+(底价/100)=费用(基本上每张门票1美元+底价的1%)

根据“谁支付费用”变量,可以得到三个输出。要么他们付底价加手续费,要么他们付底价你付手续费。那么收入就是他们支付的减去你支付的,减去费用,不管第三方如何

例子: 一张10美元的门票将产生两种潜在的产出

输出1–选择“他们支付”:他们支付11.10美元,你支付0美元,收入10美元

输出2–选择“支付费用”:他们支付10美元,你支付1.10美元,收入8.90美元

有道理吗

问题: 我认为这是可行的我的输出按预期工作。但是,如果更改前两个变量,它将默认返回主“与会者付费”设置。我想让它保留所选的无线电输入,并显示正确的输出,无论三个变量中的哪一个发生变化。我确信我只是在某个地方遗漏了一些语法,但由于所有的变量,我找不到它

下面是代码,下面是一个示例

提前谢谢你

        <div class="pricing-table">
            <form id="pricingform" oninput="calculateTotal()">

                <div class="price-row grid">
                    <div class="col-1-2">
                        Tickets Sold: <input type="text" name="ticketssold" id="ticketssold"> <i class="fas fa-times"></i>
                    </div>
                    <div class="col-1-2">
                        Ticket Price: <input type="text" name="ticketprice" id="ticketprice">
                    </div>
                </div>
                <div class="price-row">
                    <div class="col-full">
                        Fees:
                        <input type="radio" name="fees" value="PassOn" onchange="calculateTotal(this.value)" checked> <label>Pass Onto Attendee</label> <input type="radio" name="fees" value="CoverFees" onchange="calculateTotal(this.value)"> <label>Cover the Fees</label>
                    </div>
                </div>
                <div class="price-row grid">
                    <div class="col-1-3">
                        <label>Attendees Pay:</label><br /> <output id="attendees" name="attendees" for="a b">$0</span>
                    </div>
                    <div class="col-1-3">
                        <label>Estimated Cost:</label><br /> <output style="display:none;" type="hidden" id="percent" me="percent"></output><output id="cost" name="cost">$0</output>
                    </div>
                    <div class="col-1-3">
                        <label>Estimated Revenue:</label><br /> <output id="revenue" name="revenue">$0</output>
                    </div>
                </div>
            </form>
        </div>   

        <script>
            function getBasePrice() {
                    var baseprice = parseInt(ticketssold.value)*parseFloat(ticketprice.value);
                    return baseprice;
                }

            function getFees() {
                    var percent = parseFloat(ticketssold.value*ticketprice.value/100);
                    var dollar = parseInt(ticketssold.value);
                    var fees = +percent + +dollar;
                    return fees;
                }

            function calculateTotal(answer) {                

                    var baseprice = getBasePrice();         
                    var fees = getFees();             

                    if (answer == "CoverFees") {
                            var attendeespay = +baseprice;
                            var venuepays = +fees;
                            var revenuetotal = +baseprice - +fees;
                        } else {
                            var attendeespay = +baseprice + +fees;
                            var venuepays = 0.00;
                            var revenuetotal = +baseprice;
                        }

                    revenue.value = "$"+revenuetotal.toFixed(2);
                    attendees.value = "$"+attendeespay.toFixed(2);
                    cost.value = "$"+venuepays.toFixed(2); 
                };


        </script>

门票已售出:
票价:
费用:
传递给与会者支付费用
与会者付费:
0美元 估计成本:
0美元 预计收入:
0美元 函数getBasePrice(){ var baseprice=parseInt(ticketssell.value)*parseFloat(ticketprice.value); 返回基准价; } 函数getFees(){ var percent=parseFloat(ticketsSeld.value*ticketprice.value/100); var dollar=parseInt(ticketssell.value); 风险值费用=+百分比++美元; 退货费; } 函数计算器总计(答案){ var baseprice=getBasePrice(); var费用=getFees(); 如果(答案=“保险费”){ var attendeespay=+基准价格; var venuepays=+费用; var收入总额=+基准价格-+费用; }否则{ var attendeespay=+基准价格++费用; var venuepays=0.00; var收益总额=+基准价格; } revenue.value=“$”+固定总收入(2); Attendes.value=“$”+attendeespay.toFixed(2); cost.value=“$”+venuepays.toFixed(2); };
这是因为oninput在没有参数的情况下调用calculateTotal

<form id="pricingform" oninput="calculateTotal()">

门票已售出:
票价:
费用:
传递给与会者支付费用
与会者付费:
0美元 估计成本:
0美元 预计收入:
0美元
完美。我知道我在做一些不太正确的事情。非常感谢,这很有效!