Ошибка: Невозможно прочитать свойства нулевого чтения "checked"
У меня проблемы с полным подключением кнопки отправки в моем django-приложении, кажется, что JS-функция не понимает, какие отмеченные флажки искать Все, что возвращает консоль, это "cannot read properties of null, reading "checked" Я предполагаю, что это что-то с определением функции, но я не могу заставить ее работать
Вот код:
В части:
document.getElementById(this.id).checked
document.getElementById(this.id)
оценивает null
, у которого нет никаких свойств, отсюда и исключение, которое вы получаете. Вы фактически делаете null.checked
, что не сработает.
Похоже, что вы пытаетесь выполнить итерацию по флажкам и определить, установлены они или нет. Я уверен, что this
внутри написанной вами функции будет просто ссылаться на объект window
, поэтому вызов this.id
не даст вам идентификатор флажка. На самом деле вы уже получили все флажки (вы итерируете над ними!), поэтому нет необходимости получать каждый из них вручную. Просто сделайте:
listItems.each(function(listItem) {
if (listItem.checked) {
checkedListItems.push(getTaskId(listItem.id));
console.log(checkedListItems);
}
})
Обратите внимание, что функция принимает в качестве аргумента отдельный listItem (названный запутанно, поскольку на самом деле это флажки, но я следую вашей номенклатуре), над которым each
в данный момент идет итерация. Это то, что вам нужно.
Попробуйте добавить дочерний комбинатор ('>') к селектору элемента, используемому в первой строке функции submit_delete
:
var listItems = $("#list li > input");
- или используйте более точный селектор собственного изобретения.
После публикации появляются элементы-потомки input
от .list li
формы <input size='3'>
, которые не имеют атрибута id
. Обработка их в each
возвращает null
из getElementById
и выдает ошибку, что checked
не может быть свойством null
.
О each
JAuery each запускает свой обратный вызов со значением this
, установленным для элемента, обрабатываемого во время итерации. Элемент также передается обратному вызову в качестве второго аргумента. Данные элементы в HTML должны иметь уникальные значения id:
Для элементов, на которые ссылается
this
, имеющих значенияid
, использованиеthis
для элемента проще, чем вызовgetElementById(this.id)
.Для элементов (на которые ссылаются
this
), не имеющих идентификатора,!this.id
) является более простым условным выражением, чемgetElementById(this.id)===null
.Отфильтровывание элементов, которые не должны быть зацеплены во время выбора, предпочтительнее, чем отфильтровывание их позже.