Я работаю с Wagtail CMS, большая часть моего контента генерируется динамически, что делает такие вещи немного сложными для меня.
В основном я хочу нажать на элемент боковой панели и прокрутить до негораздел на моей странице.
<div class="sidebar">
<nav>
<ul>
{% for block in page.article_content %}
<li><a class="section-link" id="{{ block.value.header }}"
href="">{{ block.value.header }}</a></li>
{% endfor %}
</ul>
</nav>
Мой код боковой панели генерирует элементы li для каждого block.value.header, который есть у меня на странице.
<div class="container">
{% for block in page.article_content %}
<main>
<section id="{{ block.value.header }}">
<h1 class="headline-text section-header" >{{ block.value.header}}</h1>
<div class="header-bar"></div>
<div class="case-study-body-container" >
{{ block.value.description|richtext }}
</div>
</section>
</main>
{% endfor %}
script.js выглядит так
JS Code
let mainNavLinks = document.querySelectorAll("nav ul li a.section-link");
let mainSections = document.querySelectorAll("main section");
console.log(mainNavLinks)
let lastId;
let cur = [];
window.addEventListener("scroll", event => {
let fromTop = window.scrollY;
mainNavLinks.forEach(link => {
let section = document.querySelector(link.hash);
if (
section.offsetTop <= fromTop &&
section.offsetTop + section.offsetHeight > fromTop
) {
link.classList.add("current");
} else {
link.classList.remove("current");
}
});
});
Ошибка, которую я получаю в данный момент: Uncaught DOMException: Не удалось выполнить 'querySelector' для 'Document': предоставленный селектор пуст.
Вот как выглядит страница, чтобы дать вам, ребята, идею