Как прикрутить SessionStorage и чтобы на сохраненные элементы работал AddEventListener
Так как Вы сохраняете в session storage строку с разметкой, то обработчики кликов в таком случае должны быть не на элементах, а на их родительском контейнере. Этот приём называется
делегирование суть которого заключается в том, что Вы вешаете один обработчик на родительский элемент и так как большая часть событий всплывает вверх, то в обработчике события смотрите на каком конкретно элементе произошло событие и в зависимости от этого выполняете соответствующее действие.
Альтернативный вариант - сохранять в session storage не строку разметки, а массив объектов, где каждый объект - это информация о конкретном "деле" в списке дел.
Например:
const todos = [
{
id: 0,
text: 'Набросать первую версию todo на лапшичном коде',
isDone: true,
},
{
id: 1,
text: 'Освоить делегирование событий',
isDone: false,
},
{
id: 2,
text: 'Почитать про простые структуры данных и их применение',
isDone: false,
},
]
И через JSON.stringify(todos) сохранять в storage, а через JSON.parse(sessionStorage.getItem('todos')) - считывать обратно в массив объектов, на основе которого заново генерировать разметку.