Javascript 子菜单不能按我所希望的那样工作
我的子菜单有问题。子菜单会在单击时做出反应,但我有一个问题,我单击子菜单Javascript 子菜单不能按我所希望的那样工作,javascript,html,css,Javascript,Html,Css,我的子菜单有问题。子菜单会在单击时做出反应,但我有一个问题,我单击子菜单,内容会被删除,我不想这样做。如果有任何错误,它会写下这个错误“uncaughttypeerror:cannotreadproperty'classList'of null” 能帮我个忙吗 /*已将主类添加到父类 ||通过将eventListener添加到 ||多个可单击节点的父节点 ||并使用e.target属性查找 ||确切的节点实际点击,我们 ||只是需要来倾听 ||而不是3个独立的 ||这是事件发展的一部分 */
,内容会被删除,我不想这样做。如果有任何错误,它会写下这个错误“uncaughttypeerror:cannotreadproperty'classList'of null”
能帮我个忙吗
/*已将主类添加到父类
||通过将eventListener添加到
||多个可单击节点的父节点
||并使用e.target属性查找
||确切的节点实际点击,我们
||只是需要来倾听
||而不是3个独立的-
||这是事件发展的一部分
*/
var main=document.querySelector('.main');
main.addEventListener('click',accordion,false);
功能手风琴(e){
//停止
-
-
这是因为当你点击树叶时,“tgt”最后变成了null
。你应该检查一下以避免出现错误:
if (tgt) {
for (let drop of dropArray) {
drop.classList.remove('show');
drop.classList.add('hide');
}
tgt.classList.add('show');
tgt.classList.remove('hide');
}
如果不希望在拾取子项后关闭子菜单:
function accordion(e) {
e.preventDefault();
if (e.target.tagName === 'A' && e.target !== e.currentTarget) {
var dropArray = Array.from(document.querySelectorAll('.dropdown-menu'));
var tgt = e.target.nextElementSibling;
if(tgt) {
for (let drop of dropArray) {
drop.classList.remove('show');
}
tgt.classList.add('show');
tgt.classList.remove('hide');
}
}
e.stopPropagation();
}
这也修复了“无法读取null属性'classList'的错误”。这有助于解决该错误,但问题是子菜单的内容仍然不见了谢谢,你是个英雄!:)哦,我测试了这个,但当我单击“
。非常感谢。我也有同样的想法,但我是JavaScript初学者,我无法做到。谢谢。