javascript - 为什么当我触发函数时输入类型=数值为空
问题描述
当我输入一个数字时,它会给我我输入的第一个数字的 e.code,如果我输入另一个数字,它会给我这个数字的 e.code,但它的值是第一个数字值
var input = document.getElementById('w-input');
var kg = document.getElementById('kg');
input.addEventListener('keypress', function (e) {
if (e.code === 'Numpad1'|| e.code==='Numpad2'|| e.code==='Numpad3' ||
e.code==='Numpad4'|| e.code==='Numpad5'|| e.code==='Numpad6'||
e.code==='Numpad7'|| e.code==='Numpad8'|| e.code==='Numpad9'||
e.code==='Numpad0') {
console.log(e.code);
lbsToKg();
}
});
function lbsToKg() {
console.log(input.value);
kg.innerHTML = input.value * 0.45359237;
}
它应该获取输入值并将其与数字相乘,但它不相乘会给出 1-9 数字 0 表示该值为空。如果我输入 12 它给出 0.45359237 结果意味着它乘以 1 而不是 12
解决方案
Kamil 回答了为什么该值不正确的问题,但您也可以减少用于检查您可能觉得有用的按键的代码量。
var input = document.getElementById('w-input');
var kg = document.getElementById('kg');
input.addEventListener('keyup', function(e) {
// grab the code and the value from the event
const { code, target: { value } } = e;
// if the code is "Numpad" followed by a number call the function
// with the value
if (/Numpad[0-9]/.test(code)) lbsToKg(value);
});
function lbsToKg(value) {
kg.innerHTML = value * 0.45359237;
}
文档
推荐阅读
- vnc - 为什么在 VNC 中运行的应用程序显示在主机而不是客户端?
- java - 在 MIPS 中将十六进制转换为十进制
- reactjs - 在 componentDidUpdate 中无法访问状态
- android - 当我移动到另一个活动并返回时,片段 editText 数据被清除
- javascript - 为什么我在屏幕上看不到我的应用程序?反应.js
- python - 如何在银河坐标系中绘制地球观测站的视野?
- c++ - 在使用预发布版本中使用 cmake 实现 Z3
- r - 即使在 {r, message=FALSE} 时,R Markdown Knitted PDF doc 也会继续显示消息
- vb.net - 文本框搜索重音字符问题?
- c# - LINQ Group 通过显示不正确的结果