From ff363f50e95d2360ed58e6c897900ce52853bed4 Mon Sep 17 00:00:00 2001 From: Bob Vandevliet <35454011+bvandevliet@users.noreply.github.com> Date: Thu, 18 Dec 2025 11:38:23 +0100 Subject: [PATCH] Fix for dynamic nav links based on available sections on current page. --- src/js/scripts.js | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/src/js/scripts.js b/src/js/scripts.js index ad13924..33fdd4a 100644 --- a/src/js/scripts.js +++ b/src/js/scripts.js @@ -28,15 +28,39 @@ window.addEventListener('pageshow', () => document.addEventListener('DOMContentLoaded', () => { + /** + * @type {HTMLDivElement} + */ + const navBar = document.getElementById('navbarNav'); + /** + * @type {NodeListOf} + */ + const navLinks = navBar.querySelectorAll('a.nav-link'); /** * @type {NodeListOf} */ const sectionsWithId = document.querySelectorAll('section[id]'); + // Update nav links and add anchor links to section headers. sectionsWithId.forEach(anchorTarget => { + // Navigate within current page if a section for the anchor exists. + navLinks.forEach(navLink => + { + const href = navLink.getAttribute('href'); + + if (href.startsWith('/#') && href.substring(2) === anchorTarget.id) + { + navLink.setAttribute('href', href.substring(1)); + } + }); + + /** + * @type {HTMLHeadingElement|null} + */ const anchorHeader = anchorTarget.querySelector('h1,h2'); + // Add anchor link to section header. if (anchorHeader) { const anchorLink = document.createElement('a'); @@ -48,7 +72,7 @@ document.addEventListener('DOMContentLoaded', () => }); // Collapse the navbar in mobile view after clicking a link. - document.querySelectorAll('#navbarNav li.nav-item>a').forEach(navLink => + navLinks.forEach(navLink => { navLink.addEventListener('click', () => {