javascript - JS根据其他输入值自动计算输入字段不起作用
问题描述
请帮助我找出计算不起作用的原因。我的控制台日志没有显示任何错误。
我希望第三个禁用输入只显示前两个输入的添加。请在下面查看我的代码。有什么我没有包括或添加的吗?
var yearlyMB = document.getElementById('yearlyMB').value;
var yearlyDB = document.getElementById('yearlyDB').value;
document.getElementById('totalBudget').value = yearlyMB + yearlyDB;
.container {
display: flex;
flex-direction: row;
gap: 20px;
justify-content: center;
/*margin-top: 200px;*/
}
.block-title {
border: 2px solid green;
background-color: gray;
width: 300px;
height: 50px;
text-align: center;
}
.block-answer {
border: 2px solid red;
background-color: yellow;
width: 300px;
height: 50px;
}
<div class="container">
<div class="block-title">Yearly Marketing Budget</div>
<input type="text" class="block-answer" id="yearlyMB">
</div>
<div class="container">
<div class="block-title">Yearly Donation Budget</div>
<input type="text" class="block-answer" id="yearlyDB">
</div>
<div class="container">
<div class="block-title">Total Budget</div>
<input type="text" readonly="readonly" disabled="disabled" class="block-answer" id="totalBudget">
</div>
解决方案
您拥有大部分元素,但您的代码当前仅在页面首次加载时运行一次。
为了不断更新“总计”输入中的值,您需要在输入中添加侦听器以观察变化。请参阅:addEventListener()和输入事件
您还需要考虑输入值始终是字符串这一事实,下面的代码片段使用一元加号 (+)运算符将输入值转换为数字,然后再将它们相加。如果您不这样做,您将简单地连接两个字符串。
const yearlyMB = document.getElementById('yearlyMB');
const yearlyDB = document.getElementById('yearlyDB');
const totalBudget = document.getElementById('totalBudget');
function updateTotalBudget() {
totalBudget.value = +yearlyMB.value + +yearlyDB.value;
}
[yearlyMB, yearlyDB].forEach(input =>
input.addEventListener('input', updateTotalBudget));
.container {
display: flex;
flex-direction: row;
gap: 20px;
justify-content: center;
/*margin-top: 200px;*/
}
.block-title {
border: 2px solid green;
background-color: gray;
width: 300px;
height: 50px;
text-align: center;
}
.block-answer {
border: 2px solid red;
background-color: yellow;
width: 300px;
height: 50px;
}
<div class="container">
<div class="block-title">Yearly Marketing Budget</div>
<input type="text" class="block-answer" id="yearlyMB">
</div>
<div class="container">
<div class="block-title">Yearly Donation Budget</div>
<input type="text" class="block-answer" id="yearlyDB">
</div>
<div class="container">
<div class="block-title">Total Budget</div>
<input type="text" readonly="readonly" disabled="disabled" class="block-answer" id="totalBudget">
</div>
推荐阅读
- arrays - 为标题中的每个字母、空格、字符添加一个 span 标签
- vba - 使用 vba 从 SAP 信息框中获取数据
- swift - Firestore 安全规则违反更新规则
- azure - 更改 Azure Web 应用设置
- python - Python:从谷歌下载图片
- download - Xpages从viewPanel下载多个附件?
- c# - 以编程方式将工具提示添加到 DataGrid 单元格
- android - 在 Google 排行榜中获取用户排名(最新库)
- java - 日志查看器在 docker 中运行的 JBoss 7.1 管理控制台上不起作用
- loops - 如何访问 RiotJS 中嵌套的每个循环中的项目