Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 子菜单不能按我所希望的那样工作_Javascript_Html_Css - Fatal编程技术网

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'的错误”。

    这有助于解决该错误,但问题是子菜单的内容仍然不见了谢谢,你是个英雄!:)哦,我测试了这个,但当我单击“
  • 的左侧时也有同样的问题。这里是link@user7355869。这不是问题,你需要通过标记名来限制目标。只需
    。非常感谢。我也有同样的想法,但我是JavaScript初学者,我无法做到。谢谢。