• Как разворачивать и сворачивать (2 и более статей не получается)?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Не работает потому, что функцию sh() переопределяете для каждой статьи заново – остаётся последний вариант.

    Лучше сделать так:
    1. Скрываемым частям статей давать класс с display:none У вас это text__podzigilovol.
    2. В ссылке-кнопке для спрятать/показать записывать id управляемой статьи в data-атрибуте: data-id="info-2" – так кнопка будет «знать», кем она управляет.
    3. Кнопкам не писать в href никакого javascript:..., вместо этого лучше на них повесить слушателя события клика. Удобно дать всем кнопкам определённый класс, по нему их отыскать и в цикле повесить слушателя события.
    4. Обработчик клика описывается лишь один раз. Он получает в качестве this кликнутую ссылку. Из неё берёт data-атрибут с id нужного блока. И включает/выключает ему класс, который прячет этот блок.
    Рабочий пример
    Код
    function sh(event) {
      const className = "text__podzigilovol";
      event.preventDefault();
    
      obj = document.getElementById(this.dataset.id);
      if(!obj) return;
      if( obj.classList.contains(className)) {
        obj.classList.remove(className);
      } else {
        obj.classList.add(className);
      } 
    } 
    
    
    Array.prototype.forEach.call(
      document.querySelectorAll('.js-btn-readmore'),
      function(e){
        e.addEventListener('click', sh);
      }
    );
    Ответ написан
    8 комментариев