gpt4 book ai didi

javascript - 如何在 Javascript 中将一个元素的值传递到另一个元素的事件处理程序中?

转载 作者:行者123 更新时间:2023-12-01 00:33:34 25 4
gpt4 key购买 nike

我刚开始学习 JS 中的 DOM 操作,并且大多数时候都遇到过向事件处理程序函数传递单个参数,例如 getSum(this)。假设我们在脚本标记中有一个简单的加法函数,我已将这些输入元素包含在表单中,如下所示:

<html>
<body>
<form id="operands" oninput="getSum(this)">
<input id="op1" type="number" name="op1" placeholder="op1">
<input id="op2" type="number" name="op2" placeholder="op2">
</form>
<p id="output"></p>
<script>
function getSum(form_input){
form_input = document.getElementById("operands").elements;
document.getElementById("output").innerHTML =
Number(form_input.namedItem("op1").value) +
Number(form_input.namedItem("op2").value);
}
</script>
</body>
</html>

我正在尝试重写,以便可以消除表单元素的使用,因为其中只有 2 个子元素(输入标签),并在第二个元素中传递两个元素值,例如 getSum([],这个)像这样:

<html>
<body>
<input type="number" id="op1" name="op1" placeholder="op1">
<input type="number" id="op2" name="op2" placeholder="op2" oninput="getSum(*[op1's value]*, this)">
<p id="output"></p>
<script>
function getSum(a, b){
document.getElementById("output").innerHTML = (Number(a.value) + Number(b.value));
}
</script>
</body>
</html>

如何将第一个输入元素的值作为参数 a 传递给 getSum(a, b) 函数?

最佳答案

将监听器附加到 <script>相反,请注意 input document.body上的事件。然后您可以使用 querySelectorAll 选择体内的两个输入(或您想要的任何其他方法),获取每个值,并显示它们的总和:

document.body.addEventListener('input', () => {
const [aValue, bValue] = [...document.querySelectorAll('input')]
.map(input => Number(input.value));
document.getElementById("output").textContent = aValue + bValue;
});
<input type="number" placeholder="op1">
<input type="number" placeholder="op2">
<p id="output"></p>

虽然您可以技术上使用 getElementById 稍微调整您的原始代码在内联处理程序中,几乎在所有情况下都应避免使用内联处理程序:

<input type="number" id="op1" name="op1" placeholder="op1" oninput="getSum(document.querySelector('#op2'), this)">
<input type="number" id="op2" name="op2" placeholder="op2" oninput="getSum(document.querySelector('#op1'), this)">

关于javascript - 如何在 Javascript 中将一个元素的值传递到另一个元素的事件处理程序中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58317093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com