Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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 在不使用jquery的情况下获取具有类名的下一个元素_Javascript - Fatal编程技术网

Javascript 在不使用jquery的情况下获取具有类名的下一个元素

Javascript 在不使用jquery的情况下获取具有类名的下一个元素,javascript,Javascript,我没有访问jquery的权限。我试图实现一个accordion,但是content元素并不紧跟在标题之后。它类似于以下内容: <div class="header">...</div> <div> <div class="content"> 因此,我添加了一个函数来处理标头上的onclick事件,然后需要获取HTML源代码中具有content类的下一个元素。我怎样才能做到这一点呢?你可以通过 var contentDiv= docum

我没有访问jquery的权限。我试图实现一个accordion,但是content元素并不紧跟在标题之后。它类似于以下内容:

<div class="header">...</div>
  <div>
    <div class="content">
因此,我添加了一个函数来处理标头上的onclick事件,然后需要获取HTML源代码中具有content类的下一个元素。我怎样才能做到这一点呢?

你可以通过

var contentDiv= document.getElementsByClassName("content");

您可以在单击的标题节点上使用QuerySelect来实现这一点

<div class="header">
  <div>
    <div class="content">


[].forEach.call(document.querySelectorAll('.header'), function(header) {
    header.addEventListener('click', function(e) {
        var content = this.querySelector('.content');
        // here, "this" is the header div, and "content" is the content div
        // do majick accordion things here
    });
});

试试这个文档.getElementByIdheader.getElementsByCassName'content'

使用递归函数和nextSibling[获取下一个元素而不是子元素]怎么样


你想要查询选择或你能分享你的头状点击事件的代码吗?我猜手风琴会有不止一个。内容抱歉,我的代码出错了。请参阅更正的版本。内容不在header元素内。请使用详细信息进行编辑。不鼓励只编码并尝试此答案,因为它们不包含可搜索的内容,并且不解释为什么有人应该尝试此答案。
<div class="header" onclick="hasClass(this)">...</div>
  <div>
    <div class="content"></div>
  </div>
<script>
function hasClass(e){
    if(e.nextSibling.children === undefined || e.nextSibling.children.length == 0){
        hasClass(e.nextSibling); //go next till find class
    }
    else{
    if(e.nextSibling.children[0].className == "content"){
        console.log(e.nextSibling.innerHTML);  //get class content html
    }
    }
}
</script>