javascript - 更改任何文本输入时函数运行
问题描述
我制作了一个计算器工具,它有大约 10 种不同的文本输入供用户在单击“计算”按钮运行函数并返回计算值之前完成。我希望每次更改文本输入时都运行该函数,而不是使用按钮。这是一个简单的示例:
function calculate() {
//Inputs ("parseInt" converts string to Int)
var A = parseInt(document.getElementById("A").value);
var B = parseInt(document.getElementById("B").value);
var total = A*B;
//Output
document.getElementById("total").value = total;
};
<input type="text" id="A"> x
<input type="text" id="B">
<input type="button" onClick="calculate()" value="Calculate"> =
<output id="total"></output>
上面的示例有两个文本输入,当单击按钮时它们会相乘。最好的方法是什么,以便每次更改文本输入时计算输出?请记住,实际项目有多个文本输入。
解决方案
oninput
在两个文本输入中执行函数:
function calculate() {
//Inputs ("parseInt" converts string to Int)
var A = parseInt(document.getElementById("A").value);
var B = parseInt(document.getElementById("B").value);
var total = A*B;
//Output
document.getElementById("total").value = total;
};
<input type="text" id="A" oninput="calculate()"> x
<input type="text" id="B" oninput="calculate()">
<input type="button" onClick="calculate()" value="Calculate"> =
<output id="total"></output>
或者:您可能希望将事件附加到forEach()
:
function calculate() {
//Inputs ("parseInt" converts string to Int)
var A = parseInt(document.getElementById("A").value);
var B = parseInt(document.getElementById("B").value);
var total = A*B;
//Output
document.getElementById("total").value = total;
};
var allTextInput = document.querySelectorAll('input[type=text]');
[...allTextInput].forEach(el => el.addEventListener('input', calculate));
<input type="text" id="A" oninput="calculate()"> x
<input type="text" id="B" oninput="calculate()">
<input type="button" onClick="calculate()" value="Calculate"> =
<output id="total"></output>
推荐阅读
- mysql - 我应该使用更新还是批量更新?
- flutter - Flutter:在点击时更改容器的颜色
- react-native - 使用 expo 在 React-Native 中共享屏幕截图
- r - 将列添加到多个 Excel 文件并使用循环将其导出
- standards - 斯库力自动化测试环境
- c++ - 线程池中大量磁盘访问期间的(无响应)消息
- python - 在 Keras 中训练变分自动编码器引发“SymbolicException:急切执行函数的输入不能是 Keras 符号张量”
- regex - sed 用新字符串替换捕获组
- spring-boot - Thymeleaf 布局片段在 Spring Webflux 中不起作用
- python - 使用片麻岩的 ols 玩具示例中的“矩阵未对齐”错误