表单提交时的 HTML 输出更新
html output update on form submit
应该是一个非常简单的问题,但我似乎无法在任何地方明确找到解决方案。我希望做一个javascript计算(从一个表单中的一堆输入),我得到了两个数字。然后,这些数字将更新同一表单中两个 html 输出元素的值。这是我正在尝试做的事情的最小工作示例(如果有更好的方法,我会全听):
<!DOCTYPE HTML PUBLIC "~//IETF//DTD HTML//EN">
<html>
<head>
<script>
function somecalc() {
var a = parseFloat(document.forms["form1"]["id1"].value);
var b = parseFloat(document.forms["form1"]["id2"].value);
var c = parseFloat(document.forms["form1"]["id3"].value);
var d = parseFloat(document.forms["form1"]["id4"].value);
var out1 = a-b-c-d;
var out2 = a+b+c+d;
var outarr = [];
outarr.push(out1);
outarr.push(out2);
return outarr;
}
</script>
</head>
<body>
<form name="form1">
<table>
<tr>
<td>
Head1
</td>
<td>
Head2
</td>
<td>
Head3
</td>
<td>
Head4
</td>
</tr>
<tr>
<td>
<input type="text" name="1" placeholder="Enter 1" id="id1" size="10" maxlength="10" />
</td>
<td>
<input type="text" name="2" placeholder="Enter 2" id="id2" size="10" maxlength="10" />
</td>
<td>
<input type="text" name="3" placeholder="Enter 3" id="id3" size="10" maxlength="10" />
</td>
<td>
<input type="text" name="4" placeholder="Enter 4" id="id4" size="10" maxlength="10"/>
</td>
</tr>
</table>
<p><input type="submit" value="Run" onclick="somecalc();"></p>
<table border="1">
<tr>
<td>
Out1 = <output name="out1" for=""></output>
</td>
</tr>
<tr>
<td>
Out2 =<output name="out2" for=""></output>
</td>
</tr>
</table>
</form>
</body>
</html>
当按下"运行"按钮时,如何让outarr
的第一个元素填充 out1,同样,当按下"运行"按钮时,outarr
的第二个元素更新 out2?
您可以通过 value 属性设置 out1
和 out2
的值。
function somecalc() {
var a = parseFloat(document.forms["form1"]["id1"].value);
var b = parseFloat(document.forms["form1"]["id2"].value);
var c = parseFloat(document.forms["form1"]["id3"].value);
var d = parseFloat(document.forms["form1"]["id4"].value);
var out1 = a-b-c-d;
var out2 = a+b+c+d;
document.forms["form1"]["out1"].value = out1;
document.forms["form1"]["out2"].value = out2;
return [out1, out2];
}
<!DOCTYPE HTML PUBLIC "~//IETF//DTD HTML//EN">
<html>
<body>
<form name="form1">
<table>
<tr>
<td>Head1</td><td>Head2</td><td>Head3</td><td>Head4</td>
</tr>
<tr>
<td>
<input type="text" name="1" placeholder="Enter 1" id="id1" size="10" maxlength="10" />
</td>
<td>
<input type="text" name="2" placeholder="Enter 2" id="id2" size="10" maxlength="10" />
</td>
<td>
<input type="text" name="3" placeholder="Enter 3" id="id3" size="10" maxlength="10" />
</td>
<td>
<input type="text" name="4" placeholder="Enter 4" id="id4" size="10" maxlength="10"/>
</td>
</tr>
</table>
<p><input type="submit" value="Run" onclick="somecalc();"></p>
<table border="1">
<tr>
<td>
Out1 = <output name="out1" for=""></output>
</td>
</tr>
<tr>
<td>
Out2 =<output name="out2" for=""></output>
</td>
</tr>
</table>
</form>
</body>
</html>
function somecalc() {
var a, b, c, d, out1, out2;
a= parseFloat(document.forms["form1"]["id1"].value);
b = parseFloat(document.forms["form1"]["id2"].value);
c = parseFloat(document.forms["form1"]["id3"].value);
d = parseFloat(document.forms["form1"]["id4"].value);
out1 = a-b-c-d;
out2 = a+b+c+d;
document.querySelector("output[name=out1]").innerHTML = out1
document.querySelector("output[name=out2]").innerHTML = out2
}
试试这个,或者你可以在你的html中"id"s,比如
<output id="out1" .. >
和document.getElementById("out1").innerHTML = out1
做这样的事情。您可以使用document.querySelector
或您使用的方法代替document.getElementById
在尝试完成代码时,我只是为了简单起见而这样做。
通常,javascript文件链接到外部文件,而不是在脚本标签中声明,但我想你可以这样做是为了家庭作业,或者将它们全部放在HTML中会让它更简单一些。如果您确实将其分离出来,则必须创建一个单击处理程序,例如在我的代码中,这是btnRun.addEventListener('click', runClick);
此外,e.preventDefault()
会阻止提交按钮的默认操作,该按钮通过声明的任何操作(GET,POST等)提交表单。
此外,Mozilla Developer Network 也有很多关于 JavaScript 语法和示例的资源,如果你不知道的话 https://developer.mozilla.org/en-US/docs/Web/JavaScript
var btnRun = document.getElementById('run');
var out2 = document.getElementById('out2');
var out1 = document.getElementById('out1');
function runClick(e){
e.preventDefault();
var output1, output2;
var a = parseFloat(document.getElementById('id1').value);
var b = parseFloat(document.getElementById('id2').value);
var c = parseFloat(document.getElementById('id3').value);
var d = parseFloat(document.getElementById('id4').value);
output1 = a + b + c + d;
output2= a - b - c - d;
out1.innerText= output1;
out2.innerHTML = output2;
}
btnRun.addEventListener('click', runClick);
- Javascript循环不会自我更新
- 添加文字和评论功能更新Div
- 在JavaScript中输出转义字符
- AngularJS:ng之后,重复$scope值未按预期更新
- 如何通过数组更新角度子范围
- Ajax聊天消息重复而不仅仅是更新
- 通过CSV文件上载更新数据库表
- 平均值:无法将数据更新到数据库
- $rootScope未使用forEach进行更新
- d3基于用户选择动态更新节点
- 更新网页上Web服务器程序的实时输出
- 当我从有界数据派生输出时,为什么我的自定义指令不更新
- AngularJS更新$scope变量并输出到pre
- 表单提交时的 HTML 输出更新
- 将初始 Razor 输出与 Angular 更新相结合
- 如何在更新值后通过jQuery输出XML节点
- 在变量的值之前得到输出的变量由函数更新
- 我想使用setInterval()每1秒更新一个输出列表,但它会得到无限循环输出
- 按钮未正确更新输出
- renderWith输出在控制台中可见,但不更新浏览器