Javascript ';类列表';空的

Javascript ';类列表';空的,javascript,navbar,Javascript,Navbar,我写这篇文章是为了给导航栏显示块或显示无。虽然我有一个表单,它在默认情况下是display块的元素上提交并显示none,这导致没有显示活动类的选项卡 我的目标是能够在提交后隐藏我的div,并避免出现null错误的classist。任何和所有的想法都很感激。谢谢 // object const onePage = { pages: [], // property to save pages in show: new Event('show'),

我写这篇文章是为了给导航栏显示块或显示无。虽然我有一个表单,它在默认情况下是display块的元素上提交并显示none,这导致没有显示活动类的选项卡

我的目标是能够在提交后隐藏我的div,并避免出现null错误的classist。任何和所有的想法都很感激。谢谢

    // object
 const onePage = {
          pages: [], // property to save pages in
          show: new Event('show'),
          init: function(){
            onePage.pages = document.querySelectorAll('.page');
            //listener for show event, calling function
            onePage.pages.forEach((pg)=>{
              pg.addEventListener('show', onePage.pageShown);
            })      
            //listener for click event, calling function
            document.querySelectorAll('.nav-t').forEach((link)=>{
                  link.addEventListener('click',onePage.nav);
            })
            // showing on which page we are viewing 
            history.replaceState({}, 'Reporting', '#Reporting');
            window.addEventListener('hashchange', onePage);
          },
          nav: function(ev){
            ev.preventDefault();  
            let currentPage = ev.currentTarget.getAttribute('data-target');
            document.querySelector('.active').classList.remove('active');
            document.getElementById(currentPage).classList.add('active'); // where the error occurs
            history.pushState({}, currentPage, `#${currentPage}`);
            document.getElementById(currentPage).dispatchEvent(onePage.show);
          },
 }
 document.addEventListener('DOMContentLoaded', onePage.init);

将结果分配给一个变量,并首先检查它是否为null

nav: function(ev) {
  ev.preventDefault();
  let currentPage = ev.currentTarget.getAttribute('data-target');
  let curPage = document.getElementById(currentPage);
  if (curPage) {
    document.querySelector('.active').classList.remove('active');
    curPage.classList.add('active'); // where the error occurs
    history.pushState({}, currentPage, `#${currentPage}`);
    curPage.dispatchEvent(onePage.show);
  }
},

我将此建议添加到导航功能中,但它不起作用。我可以单击返回到第一个选项卡,但是第三个div显示出来。虽然在选项卡上单击3次后仍然返回null。可能您也需要将历史代码放入
if
中,因为它也使用
currentPage
。注释中的代码不可读,我无法告诉您在那里做了什么。我修改了答案。我不知道你的应用程序,我不知道导航栏是如何工作的。您询问了如何修复关于
getElementById()
返回
null
的错误,我演示了如何执行此操作。剩下的就靠你自己了,没问题。谢谢你的帮助!它不再返回空值。你说得对!虽然我必须找到另一个解决方案,它如何显示块和无。