Javascript ';类列表';空的
我写这篇文章是为了给导航栏显示块或显示无。虽然我有一个表单,它在默认情况下是display块的元素上提交并显示none,这导致没有显示活动类的选项卡 我的目标是能够在提交后隐藏我的div,并避免出现null错误的classist。任何和所有的想法都很感激。谢谢Javascript ';类列表';空的,javascript,navbar,Javascript,Navbar,我写这篇文章是为了给导航栏显示块或显示无。虽然我有一个表单,它在默认情况下是display块的元素上提交并显示none,这导致没有显示活动类的选项卡 我的目标是能够在提交后隐藏我的div,并避免出现null错误的classist。任何和所有的想法都很感激。谢谢 // object const onePage = { pages: [], // property to save pages in show: new Event('show'),
// 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
的错误,我演示了如何执行此操作。剩下的就靠你自己了,没问题。谢谢你的帮助!它不再返回空值。你说得对!虽然我必须找到另一个解决方案,它如何显示块和无。