Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать спойлер для текста (https://javascript.ru/forum/dom-window/73180-kak-sdelat-spojjler-dlya-teksta.html)

рони 27.03.2018 20:00

:-?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .hide ~ *{ display: none; }
  .hide ~ button{ display:  inline-block; }
  </style>

  <script>

  </script>
</head>

<body>
<div class="category-products-page-content">
  <p>Первая часть текста</p>
  <p><!-- pagebreak --></p>
  <p>Вторая часть текста</p>
  <img src="https://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="">
  <div>третья часть текста</div>
</div>

<div class="category-products-page-content">
  <p>Первая часть текста</p>
  <p><!-- pagebreak --></p>
  <p>Вторая часть текста</p>
  <img src="https://javascript.ru/forum/images/ca_serenity/misc/logo.gif" alt="">
  <div>третья часть текста</div>
</div>

<script>

  [].forEach.call(document.querySelectorAll('.category-products-page-content'), function(el){
    var elt = el.firstElementChild;
    while(elt = elt.nextElementSibling) {
       if(elt.firstChild && elt.firstChild.textContent == ' pagebreak ') {
          elt.classList.add("hide");
          var button = document.createElement("button");
          button.textContent = "Подробнее";
          button.addEventListener('click', function() {
          elt.classList.toggle("hide");
          button.textContent = button.textContent == "Подробнее"?"Cкрыть":"Подробнее";
          })
          el.appendChild(button);
          break;
       };
    }

  });

</script>

</body>
</html>

kos0760 27.03.2018 23:09

И Вам спасибо! Ваш вариант тоже неплохо подошёл.


Часовой пояс GMT +3, время: 07:20.