Как исправить ошибку, когда возникает сообщение Uncaught TypeError: Невозможно прочитать свойства null (чтение 'insertAdjacentHTML')?

Как можно исправить ошибку Uncaught TypeError: Cannot read properties of null (reading 'insertAdjacentHTML') в коде, где создается корзина для интернет-магазина? Я добавил обработчик событий для клика, но что-то идет не так. Вот фрагмент JS кода:
  • 27 апреля 2024 г. 12:20
Ответы на вопрос 3
Проблема заключается в том, что скрипт пытается использовать метод insertAdjacentHTML на элементе, который не был найден. Для ее исправления необходимо убедиться, что элемент с указанным селектором существует перед тем, как вызывать метод insertAdjacentHTML.

Если вы вставляете HTML код в корзину при клике на кнопку добавления товара, то можно сделать следующее:

1. Убедитесь, что элемент корзины существует на странице и имеет уникальный идентификатор, например:
```html
<div id="cart"></div>
```

2. Проверьте, что элемент корзины найден перед вызовом метода insertAdjacentHTML в обработчике события:
```javascript
const cart = document.getElementById('cart');

document.getElementById('add-to-cart').addEventListener('click', function () {
  const item = '<div class="item">Товар</div>';
  
  if (cart) {
    cart.insertAdjacentHTML('beforeend', item);
  } else {
    console.error('Элемент корзины не найден');
  }
});
```

При таком подходе, если элемент корзины не будет найден на странице, будет выведено сообщение об ошибке в консоль, что поможет в дальнейшей диагностике проблемы.
<code class="js">document.getElementById('9')</code> возвращает null, нет на странице такого элемента. Почему его нет, по приведённому коду сказать невозможно. <br/> <br/> Ломать себе голову тут не над чем и вариант решения только один - он легко находится по тексту ошибки. <br/> <br/> Числовой ID - это вообще плохая идея и раньше так было нельзя. <br/> Сейчас можно, но ломается древняя магия: <br/>
На момент вызова <code>document.getElementById('9')</code> на странице нет элемента с таким идентификатором.
Похожие вопросы