开发者问题收集

无法获取输入类型数字值[重复]

2021-07-31
69
<div class="spacing">
   <h5>Bill</h5>
   <label for="bill"></label>
   <input id="bill" type="number" name="bill" value="">
</div>
<script>
const bill = document.querySelector("#bill");

bill.addEventListener("input", function (e) {
console.log(bill.value);
})
</script>

我一直收到此错误 -- 未捕获 TypeError:无法读取 null 的属性“addEventListener”。

3个回答

试试这个。您在文档准备好之前读取控件。

解决方案 1

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>       
$(document).ready(function () {
   const bill = document.getElementById("bill");
   bill.addEventListener("input", function (e) {
   console.log(bill.value);
  })
});
</script>

解决方案 2 不使用 JQuery

<script>
    function printVal() {
       const bill = document.getElementById("bill");
       if (bill != null) {
          bill.addEventListener("input", function (e) {
          console.log(bill.value);
        });
      }
    }           
</script>

<div class="spacing">
  <h5>Bill</h5>
  <label for="bill"></label>
  <input id="bill" type="number" name="bill" onkeypress="printVal();">
</div>
Amit Verma
2021-07-31

您必须将其转换为整数

<script>
  const bill = document.querySelector("#bill");
  bill.addEventListener("input", function (e) {
    var a = parseInt(bill.value);
    console.log(bill.value);
    console.log(typeof a);
  })
</script>
krishna Parekh
2021-07-31

脚本标记应位于要应用处理程序的 html 的 之后 ,最好位于结束 body 标记之前。

实现此目的的另一种方法是使用 事件委托 。输入处理程序附加到文档。输入元素的检测在处理程序函数内完成。在这种情况下,脚本位置无关紧要。

示例

<script>
  document.addEventListener(`input`, evt => {
    if (evt.target.id === `bill` && evt.target.value.trim().length) {
      console.log(evt.target.value);}
    });
</script>

<div class="spacing">
  <h5>Bill</h5>
  <label for="bill"></label>
  <input id="bill" type="number" name="bill" value="">
</div>
KooiInc
2021-07-31