javascript - 导航栏不再滚动到页面上的部分?

标签 javascript html css

我向导航栏添加了一个 li,突然间,每当我单击菜单项时,它就不再滚动。我需要使用 Javascript 让我的导航栏滚动到我的部分。

这是我用 Javascript 创建的导航栏

const navMenu = document.querySelectorAll("section");
const navList = document.getElementById("navbar__list");
const items = ["Section 1", "Section 2", "Section 3", "Section 4"];

//Build the nav
items.forEach((item, i) => {
  const el = document.createElement("a");
  el.innerText = item;
  el.classList.add("menu-items");
  el.setAttribute("id", `menu-${i + 1}`);
  el.href = `#section${i + 1}`;
  navList.appendChild(el);

  const li = document.createElement("li");
  li.classList.add("menu-list");
  li.appendChild(el);

  // Append the list item to the list
  navList.appendChild(li);
});

//Make Nav Active when Clicked and scrolls down to section
document.addEventListener("click", function (event) {
  let active = document.querySelector(".menu-list.active");
  if (active) active.classList.remove("active");
  if (event.target.classList.contains("menu-list")) {
    event.target.classList.add("active");
  }
});

之前,我只添加了 a 标签,并且在 addEventListener 中定位了 .menu-items 而不是 .menu-list,但是一旦我将 li 标签添加到导航栏,li 的类就不起作用了。我不确定要编辑或更改什么

最佳答案

系统的想法是给菜单项一个 id 并使用 id 在这里滚动,你忘了给元素 id 。然后我将其放入您的点击事件中,使用此 id 获取该部分的 id 和 href。

items.forEach((item, i) => {
  const el = document.createElement("a");
  el.innerText = item;
  el.classList.add("menu-items");
  el.setAttribute("id", `menu-${i + 1}`);
  el.href = `#section${i + 1}`;
  navList.appendChild(el);

  const li = document.createElement("li");
  li.classList.add("menu-list");
  li.appendChild(el);
  li.setAttribute("id", `${i + 1}`);
  // Append the list item to the list
  navList.appendChild(li);
});

//Make Nav Active when Clicked and scrolls down to section
document.addEventListener("click", function (event) {
  let active = document.querySelector(".menu-list.active");
  if (active) active.classList.remove("active");
  if (event.target.classList.contains("menu-list")) {
    event.target.classList.add("active");
    console.log(event.target.id);
    window.location.href="#section"+event.target.id
  }
});

关于javascript - 导航栏不再滚动到页面上的部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61061553/

相关文章:

javascript - 用webpack编译SASS成多个CSS文件

javascript - 无法访问vue2中子组件动态函数中的槽

javascript - 如何使输入类型 ="tel"作为类型 ="password"工作

javascript - 使用 AngularJS 的隐形 Google reCaptcha

javascript - 使用 capybara ,我无法从 href 读取自定义数据属性

javascript - 什么是更好的?使用 iframe 或类似 jquery 的东西在外部网站加载 html 文件

html - 如果文本居中,我如何只能在一个方向上显示 'grow' 文本?

javascript - 有没有办法用ajax获取无限网页?

html - 如何在photoshop图片中获得相同的字体效果

javascript - 当我向下还原页面时,很少有 <div> 元素移动