Получение ошибки «Не удается установить свойство null» в списке добавлений

#javascript #html

Вопрос:

У меня есть следующий код. Я итеративно создаю элемент div для всех элементов, найденных в моем ответе.данные[]. Я также создаю флажок и текстовое поле для каждого элемента, присваивая им идентификатор, равный «j». Я установил addEventListener для каждого из флажков. При нажатии на флажок должно быть включено соответствующее текстовое поле. Однако вместо этого я получаю следующую ошибку: «Неперехваченная ошибка типа: Не удается установить свойство «отключено» null в HTMLInputElement.eval». Чего мне не хватает?

ОТВЕТ: Этот код работает. У меня была ошибка, которая была исправлена. Я не удалил сообщение, потому что там был ответ.

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

Ответ №1:

Проверьте строку, используете ли вы » в атрибуте html-идентификатора или нет, если вы сделали, значит, освободите место здесь

 checkbox.addEventListener('change', function () {
        if (this.checked) {
          document.getElementById('Price '   this.id).disabled = false
        } else {
          document.getElementById('Price '   this.id).disabled = true
        }
      })
 

Комментарии:

1. Спасибо @Balaji Sivasakthi Я добавил дефис, но это не помогло. Я не понимаю, как это может что-то изменить.

2. я не знаю, какой атрибут идентификатора вы упомянули в html. Некоторые люди следуют такому типу именования.

3. На самом деле, я только что обнаружил проблему. Еще раз спасибо @Balaji Sivasakthi

4. освободите место вон там

Ответ №2:

j значение равно 0 для размера (числа), и здесь вы добавляете Price для селектора идентификаторов

 document.getElementById('Price'   this.id).disabled = false