javascript - Javascript:表单中的实时计算
问题描述
使用 JavaScript 我正在开发一个表格,该表格可以根据体重和身高输入实时计算某人的 BMI 和 TBW。我正在使用 addEventListener 和 onkeyup。我对 JavaScript 很陌生,所以请耐心等待。我究竟做错了什么?
更新:我已听从建议,将“onkeyup”事件替换为“oninput”,并将身高和体重值放入函数中。我还添加了.value。我仍然有问题。
<body>
<form id="adime-form" name="adime" method="post">
<div class="three-column clear">
<label for="">Age</label>
<input type="number" name="age" id="age"> <!--Input-->
</div>
<div class="three-column">
<label for="">Sex</label>
<input type="text" name="sex" id="sex"><!--Input-->
</div>
<div class="three-column">
<label for="">Height</label>
<input type="number" name="height" id="height"><!--Input-->
</div>
<div class="three-column">
<label for="">Weight</label>
<input type="number" name="weight" id="weight"><!--Input-->
</div>
<div class="three-column">
<label for="">BMI</label>
<input type="text" name="bmi" id="bmi" oninput="returnBmi"><!--Output-->
</div>
<div class="three-column">
<label for="">Total Body Water</label>
<input type="text" name="tbw-perc" id="tbw-perc" oninput="returnTbw"><!--Output-->
</div>
</form>
<script>
var getAge = document.getElementById("age");
var getSex = document.getElementById("sex");
document.getElementById("bmi").addEventListener("input", returnBmi);
document.getElementById("tbw-perc").addEventListener("input", returnTbw);
function returnBmi(){
var getHeight = document.getElementById("height").value;
var getWeight = document.getElementById("weight").value;
var getBmi = getWeight / (getHeight**2) * 703;
document.getElementById("bmi").innerHTML = getBMI;
}
function returnTbw(){
var getHeight = document.getElementById("height").value;
var getWeight = document.getElementById("weight").value;
var getTbw = -2.097 + 0.1069 *( getHeight * 2.54) + 0.2466 * (getWeight * .45);
document.getElementById("tbw-perc").innerHTML = getTbw;
}
</script>
在此处输入代码
解决方案
考虑在输入上使用 'input' 事件:document.getElementById("bmi").addEventListener("input", returnBmi);
此外,在更新函数中获取 Weight 和Height值:
function returnBmi(){
var getHeight = document.getElementById("height").value;
var getWeight = document.getElementById("weight").value;
var getBmi = getWeight / (getHeight**2) * 703;
document.getElementById("bmi").innerHTML = getBMI;
}
因为您需要在触发事件时提取值。
推荐阅读
- python - seaborn 热图的数据准备
- sage - sage中获取有向图的关联矩阵时如何指定顶点顺序和边顺序?
- html - 如何为 2 个媒体查询提供 2 种不同的样式,同时它们的最大宽度相同但 1 具有最大高度
- mips - 无需转换指令即可将浮点数转换为整数
- python - 如何在Django Rest Framework的manytomanyfield中获取序列化程序中的键值?
- java - 从字符数组中获取整数?
- suitescript - SuiteScript - 子列表“刷新按钮”
- azure-devops - 使用 REST API 访问 Azure Dev Ops/VSTS 工件中的文件内容
- java - `Random.ints(origin, bound)`、`.longs(origin, bound)`等的API是否缺少功能?
- python - Python数轴集群练习