开发者问题收集

在 addEventListener 上获取“无法设置 null 属性”错误

2021-08-23
67

我有以下代码。我迭代地为 response.data[] 中找到的所有项目创建一个 div 元素。我还为每个项目创建一个复选框和一个文本框,并赋予它们一个等于“j”的 id。我在每个复选框上设置了一个 addEventListener。单击复选框后,它应该启用相应的文本框。但是,我得到的却是以下错误:“Uncaught TypeError:无法在 HTMLInputElement.eval 处将属性“disabled”设置为 null”。我遗漏了什么?

答案:此代码有效。我遇到了一个错误,已修复。我没有删除帖子,因为有一个答案。

    for (let j = 0; j < size; j++) {
          var jsres = response.data[j]
          div = document.createElement('div')
          div.className = 'sellDiv'
          div.appendChild(document.createElement('br'))
          div.appendChild(document.createTextNode('On Sale: '))
          let checkbox = document.createElement('input')
          checkbox.type = 'checkbox'
          checkbox.setAttribute('id', j)
          if (jsres.ForSale === true) {
            checkbox.checked = true
          } else {
            checkbox.checked = false
          }
          checkbox.addEventListener('change', function () {
            if (this.checked) {
              document.getElementById('Price' + this.id).disabled = false
            } else {
              document.getElementById('Price' + this.id).disabled = true
            }
          })
          div.appendChild(checkbox)
          div.appendChild(document.createElement('br'))
          div.appendChild(document.createTextNode('Sale Price: '))
          let text = document.createElement('input')
          text.setAttribute('id', 'Price' + j)
          if (jsres.ForSale === true) {
            text.disabled = false
          } else {
            text.disabled = true
          }
          text.setAttribute('value', jsres.Price)
          div.appendChild(text)
          div.appendChild(document.createElement('br'))
          divArea.appendChild(div)
     }
2个回答

检查该行,看看你是否在 html id 属性中使用了“ ” 如果使用,则表示在此处留出空间

checkbox.addEventListener('change', function () {
        if (this.checked) {
          document.getElementById('Price ' + this.id).disabled = false
        } else {
          document.getElementById('Price ' + this.id).disabled = true
        }
      })
Balaji Sivasakthi
2021-08-23

j 值为 0 至 size(数字) 这里为 id 选择器添加 Price

document.getElementById('Price' + this.id).disabled = false
rionalab
2021-08-23