首页 > 解决方案 > 为什么当我触发函数时输入类型=数值为空

问题描述

当我输入一个数字时,它会给我我输入的第一个数字的 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

标签: javascripthtml

解决方案


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;
}

文档


推荐阅读