Я вижу в коде кучу чего не так. Начиная от использования querySelectorAll с коллбеком, заканчивая метода scroll для установки степени прокрутки. Я напишу свои мысли по поводу ситуации, может поможет. Если будет уточняющий вопрос или пример кода который должен работать но не работает, смогу уточнить.
Идея считывать уровень прокрутки и записывать его в localStorage корректная и валидная.
В ситуации есть куча граничных случаев. Например если пользователь проскроллил на X, ушел с сайта, изменил размер окна браузера, то прокручивание элемента на X уже не будет соответствовать тому же состоянию. В зависимости от твоей ситуации (кто ставит задачи и какие у них ожидания) возможно стоит донести ограничения реалиазации.
Прокрученность элемента это свойство самого элемента а не window. Иными словами прокрученность нужно мерять не на window, а на самом элементе. Посмотри вот это апи для своего случая: Element.scrollTop - Web APIs | MDN. Если у тебя есть библиотеки типа jquery, то в них есть более удобные апи. Смотри по ситуации.
Чтобы выполнить код для каждого элемента из результата querySelectorAll нужно ипользовать цикл. Или через деструктивное присваивание превратить результат querySelectorAll в массив и использовать методы массива. Выглядит вот так: