Javascript删除控制台中的兄弟姐妹类,但它们保留在html中

前池

我正在使用JavaScript切换开关,该开关可隐藏文章的所有内容,但不包括文章的第一个元素,当单击它时,可使选定的文章可见。我试图通过给第一个孩子一个特定的班级,然后选择第一个孩子的兄弟姐妹来实现这一目标。

在控制台中,它可以正常工作,并且删除了该类,但是在html中不会发生这种情况,并且兄弟姐妹仍然不可见。

我不能为此项目使用jquery,如果我能用纯JavaScript来获得答案,我会很乐意吗?

var articleContent = document.querySelectorAll('article > *:not(:first-child');
var i;
var k;
var selector;

var h1 = document.querySelectorAll('article > *:first-child');

console.log(h1);
console.log(articleContent);

for (i = 0; i < articleContent.length; i += 1) {
  articleContent[i].classList.add('invisible');

};

for (i = 0; i < h1.length; i += 1){
  var j = i;
  h1[j].className = "click" + j;
  h1[j].onclick = function(){
    selector = document.querySelectorAll("." + h1[j].className + " ~ *");
    for (k = 0; k < selector.length; k += 1){
      var l = k;
      selector[k].classList.remove('invisible');
      console.log(selector[k]);
    }
  }
}
.invisible {
  display: none;
}
<main>
  <article>
    <h1>Article 1</h1>

    <section>
      <h2>Sub-title</h2>

      <p>Foo 1</p>
      <p>Foo 2</p>
    </section>

    <section>				
      <p>Foo 3</p>
    </section>

  </article>
</main>



<article>
  <h1>Article 2</h1>
  <section>
    <p>Foo 4</p>
    <p>Foo 5</p>
  </section>
</article>

<article>
  <h1>Article 3</h1>
  <section>
    <p>Foo 6</p>
    <p>Foo 7</p>
  </section>
</article>

TJ人群

前言:在您的代码中,您仅依赖于现代浏览器中提供的功能,因此我在下面做了同样的事情。


因此,代码的目标是隐藏所有文章,然后h1在单击其中的第一个孩子(当前是)时显示/隐藏文章

如果是这样,我可能会稍微改变一下CSS,这会使JavaScript变得简单得多:

// I always avoid creating global variables where possible
(function() {
  // A handy function for looping through QSA results
  var forEach = Array.prototype.forEach;
  
  // Loop through all articles...
  forEach.call(document.querySelectorAll('article'), function(article) {
    // ...collapsing them...
    article.classList.add('collapsed');
    
    // ...and adding a click handler to the first element
    // to toggle whether the article is hidden
    article.firstElementChild.addEventListener("click", function() {
      article.classList.toggle('collapsed');
    }, false);
  });
})();
article.collapsed *:not(:first-child) {
  display: none;
}
<main>
  <article>
    <h1>Article 1</h1>

    <section>
      <h2>Sub-title</h2>

      <p>Foo 1</p>
      <p>Foo 2</p>
    </section>

    <section>				
      <p>Foo 3</p>
    </section>

  </article>
</main>



<article>
  <h1>Article 2</h1>
  <section>
    <p>Foo 4</p>
    <p>Foo 5</p>
  </section>
</article>

<article>
  <h1>Article 3</h1>
  <section>
    <p>Foo 6</p>
    <p>Foo 7</p>
  </section>
</article>

或者,如果您想显示一篇文章以隐藏所有其他文章,那也很简单:

// I always avoid creating global variables where possible
(function() {
  // A handy way to loop through QSA results
  var forEach = Array.prototype.forEach;
  
  // Loop through all articles...
  forEach.call(document.querySelectorAll('article'), function(article) {
    // ...collapsing the article...
    article.classList.add('collapsed');
    
    // ...and adding a click handler to the first element
    // child, which:
    article.firstElementChild.addEventListener("click", function() {
      // Checks to see if this article is hidden
      if (article.classList.contains('collapsed')) {
        // Yes: Hide others, show this
        forEach.call(document.querySelectorAll('article:not(.collapsed)'), function(a) {
          a.classList.add('collapsed');
        });
        article.classList.remove('collapsed');             
      } else {
        // No: Just hide this
        article.classList.add('collapsed');
      }
    }, false);
  });
})();
article.collapsed *:not(:first-child) {
  display: none;
}
<main>
  <article>
    <h1>Article 1</h1>

    <section>
      <h2>Sub-title</h2>

      <p>Foo 1</p>
      <p>Foo 2</p>
    </section>

    <section>				
      <p>Foo 3</p>
    </section>

  </article>
</main>



<article>
  <h1>Article 2</h1>
  <section>
    <p>Foo 4</p>
    <p>Foo 5</p>
  </section>
</article>

<article>
  <h1>Article 3</h1>
  <section>
    <p>Foo 6</p>
    <p>Foo 7</p>
  </section>
</article>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript删除控制台中的兄弟姐妹类,但它们保留在html中

来自分类Dev

从 href 中删除兄弟姐妹类

来自分类Dev

如何在变量中重定向stderr但将stdout保留在控制台中

来自分类Dev

jQuery兄弟姐妹如何删除类?

来自分类Dev

jQuery兄弟姐妹如何删除类?

来自分类Dev

从其他兄弟姐妹中删除课程

来自分类Dev

通过javascript中的兄弟姐妹链接对象

来自分类Dev

防止在javascript中触发父母的兄弟姐妹的事件

来自分类Dev

兄弟姐妹嵌套类的LESS继承

来自分类Dev

以表格形式显示html兄弟姐妹

来自分类Dev

绝对定位一个兄弟姐妹时如何保留兄弟姐妹元素的位置?

来自分类Dev

删除右侧的所有兄弟姐妹,但不删除左侧的所有兄弟姐妹

来自分类Dev

删除右侧的所有兄弟姐妹,但不删除左侧的所有兄弟姐妹

来自分类Dev

flexbox 中的中心兄弟姐妹

来自分类Dev

在 XPath 中查找兄弟姐妹

来自分类Dev

删除兄弟姐妹正在删除jQuery中的多余元素

来自分类Dev

无法使用 Log4j2 在控制台中记录消息,但它们被记录在文件中

来自分类Dev

如何在将元素保留在jQuery中之前删除类

来自分类Dev

Python:如果下一个兄弟姐妹相同,则删除包含内容的html标签

来自分类Dev

从ng-repeat中删除元素,但将其HTML保留在dom中

来自分类Dev

Javascript var 在控制台中显示良好,而不是在 html 中

来自分类Dev

通过 Power shell 如何启动控制台应用程序并将其保留在新实例中

来自分类Dev

如何在自动删除4个Linux内核之前将它们默认保留在/ boot中

来自分类Dev

删除字符串,使用JavaScript将数字保留在数组中

来自分类Dev

如何删除子数组但将其内容保留在Javascript中?

来自分类Dev

没有兄弟姐妹时不考虑跨度填充,但有兄弟姐妹时会保留

来自分类Dev

美丽的汤提取父母/兄弟姐妹tr表类

来自分类Dev

使用兄弟姐妹()删除div内的选择选项

来自分类Dev

从html获取纯文本,但希望使用javascript将标题属性保留在选择标记中

Related 相关文章

  1. 1

    Javascript删除控制台中的兄弟姐妹类,但它们保留在html中

  2. 2

    从 href 中删除兄弟姐妹类

  3. 3

    如何在变量中重定向stderr但将stdout保留在控制台中

  4. 4

    jQuery兄弟姐妹如何删除类?

  5. 5

    jQuery兄弟姐妹如何删除类?

  6. 6

    从其他兄弟姐妹中删除课程

  7. 7

    通过javascript中的兄弟姐妹链接对象

  8. 8

    防止在javascript中触发父母的兄弟姐妹的事件

  9. 9

    兄弟姐妹嵌套类的LESS继承

  10. 10

    以表格形式显示html兄弟姐妹

  11. 11

    绝对定位一个兄弟姐妹时如何保留兄弟姐妹元素的位置?

  12. 12

    删除右侧的所有兄弟姐妹,但不删除左侧的所有兄弟姐妹

  13. 13

    删除右侧的所有兄弟姐妹,但不删除左侧的所有兄弟姐妹

  14. 14

    flexbox 中的中心兄弟姐妹

  15. 15

    在 XPath 中查找兄弟姐妹

  16. 16

    删除兄弟姐妹正在删除jQuery中的多余元素

  17. 17

    无法使用 Log4j2 在控制台中记录消息,但它们被记录在文件中

  18. 18

    如何在将元素保留在jQuery中之前删除类

  19. 19

    Python:如果下一个兄弟姐妹相同,则删除包含内容的html标签

  20. 20

    从ng-repeat中删除元素,但将其HTML保留在dom中

  21. 21

    Javascript var 在控制台中显示良好,而不是在 html 中

  22. 22

    通过 Power shell 如何启动控制台应用程序并将其保留在新实例中

  23. 23

    如何在自动删除4个Linux内核之前将它们默认保留在/ boot中

  24. 24

    删除字符串,使用JavaScript将数字保留在数组中

  25. 25

    如何删除子数组但将其内容保留在Javascript中?

  26. 26

    没有兄弟姐妹时不考虑跨度填充,但有兄弟姐妹时会保留

  27. 27

    美丽的汤提取父母/兄弟姐妹tr表类

  28. 28

    使用兄弟姐妹()删除div内的选择选项

  29. 29

    从html获取纯文本,但希望使用javascript将标题属性保留在选择标记中

热门标签

归档