使用Javascript更新总价
Updating price total with Javascript
我目前正在帮助处理一个本地反昆活动的预订表格,但每当用户做出更改时,我都很难更新页面上的总数。
背景:有两个票层,高级票(10英镑)和普通票(5英镑)。用户还可以添加额外的"估价",每个估价为3英镑。
目前,用户可以通过单选按钮选择他们的机票,一个用于高级,另一个用于常规。
它们通过文本框指定附加估价。
我希望能够在用户进行更改时更新总数(选择单选按钮,在文本框中更新总数)。
不幸的是,Javascript不是我的堡垒,所以我不知道事件的来龙去脉,也不知道这是否可能。到目前为止,这是我的javascript(目前还没有验证,只是在处理函数)
Javascript函数(UpdateTotal)
function UpdateTotal() {
/* Get prices and calculate total */
var ticketPrice = document.getElementById('tick_choice').value;
var additionals = parseInt(document.getElementById('additional_valuations').text, 10);
var total = ticketPrice + additionals;
/* Attempt to update the value (Inside a TD tag) */
document.getElementById('totalPayable').innerHTML="£"+total;
}
使用JS事件调用此代码的最佳方式是什么?
非常感谢!
编辑:这是相关的HTML
对于单选按钮:
<input id="tick_choice" type=RADIO VALUE="10"> Premium
<input id="tick_choice" type=RADIO VALUE="5"> Regular
对于文本框:
<input type="text" id="regular_tickets">
您当前的html是无效的:您不应该给多个元素相同的id,因此当您使用document.getElementById("tick_choice")
时,它只会找到其中一个。要使单选按钮作为一个组发挥作用,它们需要具有相同的名称属性,但如果您想使用document.getElementById()
访问它们,它们可以具有不同的ID。你可以这样做:
<input id="tick_choice_premium" name="tick_choice" type=RADIO VALUE="10"> Premium
<input id="tick_choice_regular" name="tick_choice" type=RADIO VALUE="5"> Regular
<script>
var choicePremium = document.getElementById("tick_choice_premium"),
choiceRegular = document.getElementById("tick_choice_regular"),
additionals = document.getElementById("additional_valuations");
choicePremium.onclick = UpdateTotal;
choiceRegular.onclick = UpdateTotal;
additionals.onchange = UpdateTotal;
function UpdateTotal() {
/* Get prices and calculate total */
var ticketPrice = choicePremium.checked ? choicePremium.value
: choiceRegular.value;
var additionals = parseInt(additionals.value, 10);
var total = ticketPrice + additionals;
/* Attempt to update the value (Inside a TD tag) */
document.getElementById('totalPayable').innerHTML="£"+total;
}
</script>
将脚本块放在主体的底部,或者放在元素之后,这样当代码运行以分配事件处理程序时,元素就已经被解析了。
上面所做的是从在变量中保留对DOM元素的引用开始,这样就可以访问它们来设置事件处理程序,也可以在函数中访问它们,而无需到处重复document.getElementById()
。
然后它将其设置为,当单选按钮更改时,将调用您的函数(对于单选按钮或复选框按钮,即使通过键盘更改,也会发生单击事件),当文本框更改时,也将调用函数。请注意,.onclick = UpdateTotal
不会在UpdateTotal
后面放括号,因为它不是在调用函数,而是在获取对函数的引用,因此稍后事件发生时会调用它。
然后在你的函数中,它会检查第一个无线电是否被检查,如果是,则使用它的值,否则使用另一个无线电的值-显然,这只在只有两个无线电的情况下有效,但我相信你可以看到如何扩展它以允许更多的无线电。
对于影响总数的每个无线电元素,您只需处理"onclick":
<input id="tick_choice" type="radio" value="10" onclick="UpdateTotal();" />
对于一个文本框,你不想这样做(如果你点击进入就会这样做),所以你可以查看onchange或onkeyup
<input type="text" onchange="UpdateTotal();" />
然后,您的函数可以根据需要进行计算
- Glassfish没有更新JavaScript文件
- 通过键/值引用更新Javascript对象值
- 更新JavaScript对象中的嵌套属性
- 从另一个页面更新 JavaScript 变量的值
- 如何在运行总计计算器时返回表单输入并更新 JavaScript 变量
- 可以在不重新加载页面的情况下更新javascript中的cookie
- 一个可以'不要更新javascript
- 如何使用PHP更新JavaScript变量
- 更新Javascript货币计算器以实时计算多个总额
- 使用HTML更新JavaScript对象
- 正在更新JavaScript中的表
- 使用SimpleHTTPServer响应的结果更新javascript变量的值
- 无法更新 Javascript 对象文本中的值,然后更新页面
- 从我的 C# 函数更新 Javascript 文件的变量
- 网页编辑器,以便页面在我更新JavaScript和HTML时刷新
- 如何通过更改输入值来更新 JavaScript 中的数组对象
- 从 php 脚本更新 javascript 值
- 单击内部锚点/哈希时自动更新 JavaScript 元素
- 自动更新 JavaScript 中的实际参数
- 更新 JavaScript 中的原型属性