Javascript:读取,添加和显示表单值
Javascript: Read, Add and Display form values
我正在尝试编写一个 Web 应用程序,该应用程序将用户输入作为 15 个文本中的数字或 html 表单上的数字输入,然后它应该将这些值加在一起并在页面上其他位置的标签中显示总计。
我有 15 个输入,类名为"takeings",页面上有一个 ID 为"TotalLabel"的标签。
function getsum () {
var rows = document.getElementsByClassName("takings");
var total = 0;
for (var i = 0; i < rows.length; i++) {
var val = parseFloat(rows[i].value);
total += val;
}
var label = document.getElementById("TotalLabel");
label.value = total;
alert(parseFloat(total));
}
window.onload = getsum;
警报仅用于调试目的,并且似乎变量总计在脚本末尾仍设置为零。我还需要使 getsum()
函数在每次用户在具有类"takeings"的任何字段中输入数据时触发。
谁能帮忙?
因此,您需要向所有元素添加更改事件并调用getsum
function getsum () {
var rows = document.getElementsByClassName("takings");
var total = 0;
for (var i = 0; i < rows.length; i++) {
var val = parseFloat(rows[i].value);
total += val;
}
var label = document.getElementById("TotalLabel");
label.value = total;
}
window.onload = getsum;
//Example showing how to add one event listener to the page and listen for change events
//The following works in modern browsers, not all browsers support addEventListener, target, and classList.
document.body.addEventListener("change", function(evt) {
var targ = evt.target;
if(targ.classList.contains("takings")) {
getsum();
}
});
label { display: block; }
<label>1</label><input type="text" class="takings" value="0"/>
<label>2</label><input type="text" class="takings" value="0"/>
<label>3</label><input type="text" class="takings" value="0"/>
<label>4</label><input type="text" class="takings" value="0"/>
<label>5</label><input type="text" class="takings" value="0"/>
<label>Total:</label><input type="text" id="TotalLabel" value="0" readonly/>
要让getSum()
函数为所有这些元素触发,您可以使用 Javascript 向具有所需类名的所有元素添加一个 onchange
事件
var input = document.getElementsByClassName("takings");
for (var i = 0; i < cells.length; i++) {
input[i].onchange = getSum;
}
除此之外,我在getSum()
函数中没有看到任何可见的错误。
例如,您需要将 EventListener 添加到输入字段并调用 getsum
。var a = document.getElementsByClassName("takings");
for (var i = 0;i<a.length;i++){
addEventListener('keyup',getsum);
}
请注意,标签包含 innerHTML,而不是值:
label.innerHTML = total;
使用您的实际函数,只要并非所有输入都有值,您就会得到 NaN,因此您需要添加
if (val) {
total += val;
}
到你的 for 循环。
完整工作代码:
function getsum(){
var rows = document.getElementsByClassName("takings");
var total = 0;
for (var i =0; i < rows.length; i++){
var val = parseFloat(rows[i].value);
if (val) {
console.log(val);
total += val;
}}
var label = document.getElementById("TotalLabel");
label.innerHTML = total;
}
var a = document.getElementsByClassName("takings");
for (var i = 0;i<a.length;i++){
this.addEventListener('keyup',getsum);
}
演示
相关文章:
- 如何使用jquery在单击按钮时显示表单
- 如果选择单选按钮,则显示表单
- 单击按钮后在警报中显示表单值
- 提交后如何递增和显示表单数量
- 在HTML中隐藏/显示表单会产生异常结果
- 使用Jquery在单击“”时显示表单;添加对象”;按钮
- 根据发送的输入内容隐藏/显示表单
- 如何检查页面加载时是否选中复选框,如果选中,则显示表单
- 以引导模式显示表单结果
- 如何使用复选框显示表单的更多选项并更改表单的操作属性
- 根据在jQuery字段中输入的数量显示表单的不同部分
- 我正在尝试在使用 javascript 单击按钮时显示表单
- 如何使用 JavaScript 函数显示表单 asp.net
- 如何通过隐藏表单在同一页面中显示表单输出
- 如何向客户显示表单中的预览
- 如何在同一窗口中显示表单输出并隐藏表单
- 使用jQuery切换根据选中的复选框隐藏/显示表单提交按钮 - 如何设置默认关闭的提交按钮
- 显示表单前的 JQGRID 验证
- 根据下拉列表中的选定值显示表单
- Javascript:读取,添加和显示表单值