开发者问题收集

我该如何解决 .length 未定义问题?

2020-05-23
884

我在这里第 2 行收到 .length 错误。

index.js:10 Uncaught TypeError: Cannot read property 'length' of undefined"

代码:

<div class="formCustomerName">
         <label>Name:</label>
         <input type="text" id="customerName" placeholder="Name" value="" 
required>
</div>



let name = document.getElementById('customerName').value;

form.addEventListener('input', pushData, false);{
    if (name.value.length >= 0) {
        btn.setAttribute('disabled', 'disabled')
        document.getElementById('submitInput').innerHTML = ("Hello If statment here!")

    } else {
        document.getElementById('submitInput').innerHTML = ("Hello Else statment here!")
        btn.removeAttribute('disabled');
    }



function pushData() {
2个回答

您将 customerName 的 value 存储到 name

然后,您尝试访问 name.value.length ,其本质上是

document.getElementById('customerName').value.value.length

由于 value 属性没有其他 value 属性,因此它返回 undefined ,从而导致错误。

要解决此问题,请从 name 的定义中删除 .value

let btn = document.getElementById('submitButton');
let form = document.getElementById('form');
let name = document.getElementById('customerName');

form.addEventListener('input', pushData, false); 

function pushData(){
  if (name.value.length >= 0) {
    btn.setAttribute('disabled', 'disabled')
    document.getElementById('submitInput').innerHTML = ("Hello If statment here!")

  } else {
    document.getElementById('submitInput').innerHTML = ("Hello Else statment here!")
    btn.removeAttribute('disabled');
  }
}
<form id="form">
  <div class="formCustomerName">
    <label>Name:</label>
    <input type="text" id="customerName" placeholder="Name" value="" required>
    <button id="submitButton">Submit</button>
    <div id="submitInput"></div>
  </div>
</form>
FZs
2020-05-23

您有:

let name = document.getElementById('customerName').value;

因此,名称是 ID 为 customerName 的元素的

name.value.length >= 0

表示 element.value.value.length 。您应该在条件下得到以下内容:

name.length >= 0
Michal
2020-05-23