问题是当我点击导航栏中的链接时,它没有转到它的部分

AT-D

我正在尝试制作一个动态导航栏,当我点击链接时,它会转到其特定部分,我使用了以下代码:

//scroll to section when click on nav links
    li_links.addEventListener('click', e => {
        e.preventDefault();
        section.scrollIntoView()
    });

为什么当我点击链接时它会转到页面的末尾而不是指定的部分?

这是代码:

const Ul = document.querySelector('ul');
const sections = document.querySelectorAll('section');
for(section of sections) {
    //create li:
    const li_items = document.createElement("li");
    
    //create new anchor elements:
    const li_links = document.createElement("a");
    
    //give anchor elements a hyperlinks:
    const IdAttribute = section.getAttribute('id');
    li_links.setAttribute('href', IdAttribute);

    //get the names of the sections:
    const navData = section.getAttribute("data-nav");
    const text = document.createTextNode(navData);
    
    //give the navbar style :
    li_links.classList.add("menu__link");

    Ul.appendChild(li_items);
    li_items.appendChild(li_links);
    li_links.appendChild(text);

    //scroll to section when click on nav links
    li_links.addEventListener('click', e => {
        e.preventDefault();
        section.scrollIntoView()
    });

}
//end of the navbar.

HTML代码:

<header id="hdr" class="page__header">
    <nav class="navbar__menu">
      <!-- Navigation starts as empty UL that will be populated with JS -->
      <ul id="navbar__list"></ul>
    </nav>
  </header>
  <main>
    <header class="main__hero">
      <h1>Landing Page </h1>
    </header>
      <section id="section1" data-nav="Section 1" class="your-active-class">
      <div class="landing__container">
        <h2>Section 1</h2>
        <p></p>
        <p></p>
      </div>
    </section>
    <section id="section2" data-nav="Section 2">
      <div class="landing__container">
        <h2>Section 2</h2>
        <p></p>
        <p></p>
      </div>
    </section>
    <section id="section3" data-nav="Section 3">
      <div class="landing__container">
        <h2>Section 3</h2>
        <p></p>
        <p></p>
      </div>
    </section>
    <section id="section4" data-nav="Section 4">
      <div class="landing__container">
        <h2>Section 4</h2>
        <p></p>
        <p></p>
      </div>
    </section>

代码笔上的代码:CodePen

加布里埃尔·彼得里奥利

使用constlet声明一个块作用域变量

for(const section of sections) {

否则sectionis 在函数范围内,并且为循环的每次迭代重新分配。因此,当事件发生时,它们将指向 的最后一个值section

阅读https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#description

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C#中执行SQL查询时出错,当我手动输入它时没有错误

当我运行代码时,我遇到了段错误,但是当调试器运行它时,它说没有问题。

Angular 9中的* ngFor中的问题,当我尝试在锚标记中使用它时,它表明“属性ngFor上没有匹配的指令”

当我用“排毒”点击时,该按钮没有被点击。但是只要点击一下就可以点击它

当我包含扩展小部件时,为什么没有显示?它只是不显示(例如,当我用容器替换它时,它显示)

我有三个节点的dse图集群。启用了两个节点图,一个启用了搜索。问题是当我运行api请求时,它没有响应

当我单击网站上的链接时,它没有打开?为什么会这样呢?

我的CMS正在剥离?当我尝试保存链接时,在URL的末尾...有没有办法使它停留?

ios:当我点击它时,UITableView显示数据

当我尝试点击它时子菜单消失

当我在导航控制器 Swift 3 中使用 searchBarTextDidBeginEditing 时,它没有被调用。

当我把它放在一个包中时没有找到 .js 文件

当我点击它时显示项目

为什么我的导航栏不允许我点击链接直到它到达某个元素?

当我在 localhost:5000 中运行它时,我的 html 站点中的所有文本都作为链接出现

Java 作业问题:我正在尝试运行我的程序,它没有显示任何错误但是当我尝试运行它时它不起作用?

我的网站在 chrome 扩展中有响应,但是当我在手机中查看它时,它没有响应

当我在 xcode 11 中创建一个新项目时,它没有故事板,如果我运行旧项目,它没有控制器?

为什么即使我在makefile中写了它,当我执行make时也没有-g选项(gdb)

当我点击编辑它时,我的文本字段隐藏在底部导航栏中的键盘后面

房间数据库:当我点击保存按钮时,它工作正常!但问题是我必须重新启动应用程序然后我只能在 recyclerview 上看到数据

当我点击它时按钮消失

我在 php 中登录时遇到问题。当我在 localhost 中测试它时,登录页面工作正常。但是当我将它上传到服务器并进行测试时,它没有用

当我点击注册按钮时,它应该将我重定向到下一页,但这并没有发生

我的导航栏/标题有问题,它曾经可以工作,但现在不行了

当我点击链接导航到页面的不同部分时,导航栏覆盖内容

我有两个活动,当我点击后退按钮时,它必须转到上一个活动,

嗨,当我从第 11 行开始循环遍历 Datatable 分页表时,我在 Jquery 中遇到了问题,它没有循环

我在 javascript 过滤中遇到问题,我没有在浏览器中获取过滤的项目,但是当我控制过滤的产品时它工作得很好?