Как сделать кнопку Подробнее чтобы показать скрытый текст на чистом JS

Поделиться
HTML-код
  • Опубликовано: 12 сен 2024
  • В этом видео я покажу как сделать кнопку Подробнее (Read More) для того чтобы показать скрытый текст на чистом JavaScript без библиотек и фреймворков.
    ✔Советую посмотреть:
    Быстрый старт в JavaScript: • #0 Основы программиров...
    Курс по JavaScript: • Уроки по JavaScript
    ⚡️ Эксклюзив на Boosty - boosty.to/itdo...
    💡 Telegram канал - t.me/itdoctor_...
    🎥 Курсы на Stepik - stepik.org/use...
    💰 Донаты на ЮMoney - sobe.ru/na/itd...
    ВКонтакте - itdocto...
    Яндекс Дзен - zen.yandex.ru/...
    Rutube - rutube.ru/chan...
    #javascript #js #itdoctor

Комментарии • 101

  • @ITDoctor
    @ITDoctor  3 года назад +1

    Курс Frontend разработчик на HTML, CSS и JavaScript: stepik.org/z/113402

  • @user-ue3by8ht4d
    @user-ue3by8ht4d 4 года назад +3

    СПАСИБО! ТЫ ПРОСТО МОЙ ГЕРОЙ В ЭТУ ХОЛОДНУЮ ДОЖДЛИВУЮ НОЧЬ!

    • @ITDoctor
      @ITDoctor  4 года назад +1

      Побольше вам солнечных деньков

  • @user-vs8hw9zn5s
    @user-vs8hw9zn5s 4 года назад +2

    Спасибо огромное, не мог долго найти решение, спасибо огромное!!!!!!

  • @jacpat6980
    @jacpat6980 Год назад +1

    спасибо, все детально и понятно!

    • @ITDoctor
      @ITDoctor  Год назад

      Рад что понравилось

  • @KvN-UA
    @KvN-UA 5 лет назад +1

    Класс, и так доступно изложено все. Спасибо!

  • @latest548
    @latest548 3 месяца назад

    Очень полезный урок

    • @ITDoctor
      @ITDoctor  3 месяца назад

      спасибо за оценку

  • @user-sw2em9pm2w
    @user-sw2em9pm2w 10 месяцев назад +1

    Спасибо большое, очень выручил

    • @ITDoctor
      @ITDoctor  10 месяцев назад

      Рад что помог

  • @_Fantom_.
    @_Fantom_. 5 лет назад +1

    Отличный урок, спасибо!

  • @ВячеславХотеев
    @ВячеславХотеев 9 месяцев назад +1

    Большое спасибо!

    • @ITDoctor
      @ITDoctor  9 месяцев назад

      Пожалуйста!

  • @saintdeveloper6407
    @saintdeveloper6407 4 года назад +1

    Спасибо. Все понятно!

  • @user-jj5kh9mk3k
    @user-jj5kh9mk3k 4 года назад +2

    Спасибо большое, очень поучительно) К сожалению, у меня возникла проблема, кнопка "Подробнее" есть и половина текста скрыта, но при нажатии на кнопку остальной не открывается. Можете подсказать почему?

  • @Anatoli-bq1pe
    @Anatoli-bq1pe Год назад +1

    Класс! Благодарю

    • @ITDoctor
      @ITDoctor  Год назад

      Рад что оценили

  • @user-fs1ux7dy6r
    @user-fs1ux7dy6r 5 лет назад +1

    Молодец. Давай какой-нибудь интересный слайдер, например с изображением по 3 штуки, с затемнением левого и правого и явно видимого по центру. Либо круговой слайдер.

  • @yflow5337
    @yflow5337 4 года назад +2

    Спасибо большое! Жаль что только один лайк можно поставить!

    • @ITDoctor
      @ITDoctor  4 года назад

      Вам спасибо

  • @codetherapytt978
    @codetherapytt978 2 года назад +1

    Класс! Мастер!

  • @allasv
    @allasv 2 года назад +1

    Спасибо большое!

    • @ITDoctor
      @ITDoctor  2 года назад

      Пожалуйста

  • @user-xb4zd7hm1o
    @user-xb4zd7hm1o 3 года назад

    Спасибо! Лайк! Побольше таких видео

    • @ITDoctor
      @ITDoctor  3 года назад

      Пожалуйста

  • @D_P_Shmot
    @D_P_Shmot Год назад +1

    Респект, помогло ❤‍🔥

    • @ITDoctor
      @ITDoctor  Год назад

      Рад слышать

  • @victorchilari
    @victorchilari 5 лет назад +1

    Спасибо, помогло

  • @andreyArzumaniyan
    @andreyArzumaniyan 3 года назад +1

    а как сделать с анимацией выдвижения?

  • @ДмитрийВасинюк
    @ДмитрийВасинюк 4 года назад +2

    Подскажите пожалуйста, набрал все вроде точь в точь, но в браузере при нажати пропадает полностью кнопка "далее", текс раскрывается, а кнопка пропадает полностью.Что делать и как исправить?

    • @bulbazavr1823
      @bulbazavr1823 2 года назад

      ты в итоге смог исправить ошибку?

  • @DamianTrash
    @DamianTrash 2 года назад +1

    А как на счёт автоматического разделения текста? Вряд ли контент-менеджер будет сидеть с кодом возиться при заполнении сайта. Особенно, если тысячи страниц.

    • @Jastioknowyt
      @Jastioknowyt Год назад

      надо сообщение разделить на массив и если есть пробелы то разделять элементы и получается если в массиве больше 50 элементов (это 50 сообщений) то выполняется код для сокращения

  • @user-dw3xw9hf5m
    @user-dw3xw9hf5m 4 года назад +1

    Спасибо!

  • @vitaliishostak3237
    @vitaliishostak3237 5 лет назад +1

    а не проще доставать елементы с помощью querySelector?

  • @_Peterhof_
    @_Peterhof_ 5 лет назад +1

    Уважаемый доктор, прошу помочь. Голову сломал. Почему мы в if прописываем сначала условие, которое является ложным, а не наоборот? Я хотел попробовать разными способами для практики, и сделал по-другому. В if писал условие истинное - dots.style.display === “inline”, то есть код в случае если условие будет истиной: текст показать, точки убрать, кнопку изменить на Скрыть. В else соответственно наоборот: точки вернуть, текст убрать, текст вернуть на Подробнее. Но в этом случае с первого раза не срабатывает кнопка. Только со второго. Почему она срабатывает со второго раза??? Думаю..

    • @_Peterhof_
      @_Peterhof_ 5 лет назад +2

      В общем всё-таки сделал как хотел. Я завел переменную checkIt равную true.
      Вынес ее за функцию, так как если не вынести, то обратно не свернётся при следующем клике. В условии if написал условие checkIt - которое
      является истиной, чтобы выполнился первый блок if. в коде if внизу
      поменял true на false, чтобы при следующем клике выполнился else. И в
      коде else в конце вернул обратно значение на true, чтобы уже при
      следующем клике опять выполнялся if.
      var checkIt = true;
      function readMore() {
      var dots = document.getElementById("dots");
      var more = document.getElementById("more");
      var btn = document.getElementById("btn");
      if (checkIt) {
      more.style.display = "inline";
      dots.style.display = "none";
      btn.innerHTML = "Скрыть";
      checkIt = false;
      } else {
      dots.style.display = "inline";
      more.style.display = "none";
      btn.innerHTML = "Подробнее";
      checkIt = true;
      }

    • @ITDoctor
      @ITDoctor  5 лет назад

      рад что у вас получилось. я сейчас немного ограничен в своих ответах. если вы не в курсе почему то читайте Новости на странице сообщества канала

  • @nicoleangelova1095
    @nicoleangelova1095 2 года назад

    Пытаюсь применить это на пункты (), но почему то их не скрывает. Может можно это как то исправить?

  • @zFL1CKz
    @zFL1CKz 3 года назад +2

    А если таких блоков, например, 20? Как тогда можно сделать?

    • @fazliddin__web-development1910
      @fazliddin__web-development1910 2 года назад

      нашол ответ,

    • @fazliddin__web-development1910
      @fazliddin__web-development1910 2 года назад

      ?

    • @zFL1CKz
      @zFL1CKz 2 года назад

      @@fazliddin__web-development1910 по-моему, я пришел к тому, что заюзал какую-то библиотеку. Но можно просто в каждом блоке при клике передавать this и в функции отлавливать сам блок и искать нужный в нем класс с текстом (не самый лучший вариант наверняка, но это должно работать)

  • @_cyborg
    @_cyborg 2 месяца назад

    Подскажите, пожалуйста. Как сделать, чтобы текст открывался плавно? Примерно 1 секунду

    • @ITDoctor
      @ITDoctor  Месяц назад

      Изучайте CSS более детально, можно анимировать разные свойства. у меня есть несколько уроков на эту тему
      ruclips.net/video/vagLoF1MZac/видео.html
      ruclips.net/video/g-EbZ684J30/видео.html
      ruclips.net/video/dQ0nAcj76yk/видео.html
      посмотрев их, если будет недостаточно чтобы сделать задуманное, у вас точно появятся мысли, идеи и общее понимание сути. А уже имея это вы сможете дальше погуглить, почитать и сделать то что требуется. Таким образом решите задачу и приобретете бесценный, реальный, практический опыт и кучу дополнительных знаний мелких нюансов, которые в будущем точно еще пригодятся.

  • @opa_hromosoma645
    @opa_hromosoma645 5 лет назад

    Всьо круто видео действительно оказалось очень лаконичным и понятым.))
    Но не могли бы вы добавить ссылку на скачивание кода ето бы во много раз упростило работу остальных людей)))

    • @ITDoctor
      @ITDoctor  5 лет назад +1

      если постоянно копировать код то его трудно научиться писать самому. мне не жалко но для начинающих будет полезней делать это вручную

  • @KapitanDi
    @KapitanDi 6 месяцев назад

    Спасибо! Супер! Вопрос есть, немного не по теме, но вам наверняка его решить как два байта отправить) Итак, есть форма, Имя, телефон, и собственно сам текст, форма такая, при нажатии кнопки отправить открывается почтовая программа, но в ней весь кириличный текст преобразовался в кракозябры, как это исправить? Спасибо ещё раз)

    • @KapitanDi
      @KapitanDi 6 месяцев назад

      подписался, с нетерпением жду от вас новое видео на эту тему)

    • @ITDoctor
      @ITDoctor  6 месяцев назад +1

      кодировка в теге meta установлена корректно? в utf8?

    • @KapitanDi
      @KapitanDi 6 месяцев назад

      @@ITDoctor да, всё автоматом на VSC

    • @KapitanDi
      @KapitanDi 6 месяцев назад +1

      спасибо

  • @questionsanswer6293
    @questionsanswer6293 4 года назад

    Я один не понимаю почему мы проверяем display none у dots если мы указали его у more? точки всегда видимы и открыты

  • @Parmax885
    @Parmax885 4 года назад

    Спасибо большое за урок! У меня все получилось, но остался маленький вопрос)))
    Подскажите, как можно реализовать идею кнопки использую query.sectors? Чтоб можно было обратиться по названию класса, а не по getElementById?
    А то у меня более 10 кнопок подробнее... Через id не вариант. Много кода в .js, вот и ищу альтернативу.

    • @ITDoctor
      @ITDoctor  4 года назад +1

      learn.javascript.ru/searching-elements-dom вот тут посмотрите

    • @Parmax885
      @Parmax885 4 года назад

      @@ITDoctor Спасибо

    • @user-mx6cd8ns4i
      @user-mx6cd8ns4i 3 года назад

      могли бы вы рассказать подробнее, как обратиться ко всем кнопкам "подробнее" если их больше чем 1? мучаюсь уже часа 4

    • @powerjavascriptman
      @powerjavascriptman Год назад

      @@user-mx6cd8ns4i фор циклом или форич

  • @KapitanDi
    @KapitanDi 6 месяцев назад

    Если карточек/блоков несколько, каким образом можно их растиражировать? Тупо скопировать, разумеется, не сработает. Какие переменный и команды надо подредактировать. Спасибо.

    • @ITDoctor
      @ITDoctor  6 месяцев назад

      как раз следующий после этого урок в плейлисте про это ruclips.net/video/_YLpvnqQ95g/видео.html
      весь плейлист-курс ruclips.net/p/PLuY6eeDuleINjS4_G7KuYThU_T4uzpAuG

    • @KapitanDi
      @KapitanDi 6 месяцев назад

      Отлично! Тнкс

  • @zapiski_verstalshika
    @zapiski_verstalshika 3 года назад

    я поставил лайк, но: onclick??? да и текст лучше обрезать не с помощью а с помощью js...

  • @e_gor8447
    @e_gor8447 2 года назад

    Здравствуйте а как применить это для нескольких а то я на 3 применил, а он открывает только одно с помощью кода а другие не реагируют

    • @ITDoctor
      @ITDoctor  2 года назад

      ruclips.net/video/_YLpvnqQ95g/видео.html ответ на ваш вопрос

  • @dezo103
    @dezo103 3 года назад +1

    в 2019 году переменные объявлять через var ну такое себе)

  • @МаксимЕкимов-ю1с
    @МаксимЕкимов-ю1с 3 года назад

    А если у нас несколько кнопок "подробнее" и к ним отдельный текст, то как js подкорректировать?

    • @ITDoctor
      @ITDoctor  3 года назад

      ruclips.net/video/_YLpvnqQ95g/видео.html вот видео в этом же плейлисте на вашу тему

  • @KuKu_RuKu88
    @KuKu_RuKu88 4 года назад

    проблема в том, что срабатывает только со второго клика, как решить не подскажете ???

    • @user-mf2km4pk6n
      @user-mf2km4pk6n 4 года назад

      Событие onclick срабатывает от одного нажатия. Возможно что-то не так делаете

  • @user-ud8yt9yt4k
    @user-ud8yt9yt4k 5 лет назад

    Спасибо тебе большое! Все круто! Но есть проблема, не могу реализовать такую фичу... Есть много элементов в инет магазине. У которых, есть кнопка "Подробнее" Как сделать так чтобы при клике на кнопку появлялся скрытый контент. Ведь в данном ролике такое применимо к одному блоку. Просто не хотелось бы к каждой отдельной кнопки прописывать скрипт. Потому как это не разумно. Если таких кнопок будет штук пятьсот? Но за видео еще раз Спасибо

    • @ITDoctor
      @ITDoctor  5 лет назад

      если магазин расположен на CMS (а так и должно быть), то там немного по другому всё это реализуется. Зависит от CMS, обычно просто плагин ставится или уже есть возможность делать такие элементы.

    • @user-ud8yt9yt4k
      @user-ud8yt9yt4k 5 лет назад

      @@ITDoctor Ок, спасибо.

  • @RadioTorrent
    @RadioTorrent 3 года назад

    А куда сохранить JavaScript? html и css то понятно...

    • @ITDoctor
      @ITDoctor  3 года назад

      в каталог JS например или в корень

  • @user-tg3bj1vu9i
    @user-tg3bj1vu9i 2 года назад

    кнопка вверх на js на bootstrap 5

  • @muradagamedov4975
    @muradagamedov4975 2 года назад

    А если много таких карточек?

    • @ITDoctor
      @ITDoctor  2 года назад

      ruclips.net/video/_YLpvnqQ95g/видео.html

  • @FailValiev
    @FailValiev Год назад

    где ссылка на код?

    • @ITDoctor
      @ITDoctor  Год назад

      во втором уроке, в продолжении ruclips.net/video/_YLpvnqQ95g/видео.html
      ну или сразу github.com/morphIsmail/readmore

  • @baurbaur332
    @baurbaur332 4 года назад

    Вроде скрытый текст плоха не сео влияет

  • @user-hy6ru4gw6t
    @user-hy6ru4gw6t 2 года назад

    а что делать если не получаеться
    Ды́мковская игру́шка - один из русских народных глиняных художественных промыслов. Возник в заречной слободе Дымково, близ города Вятки (ныне на территории города Кирова)... Возникновение игрушки связывают с весенним праздником Свистунья, к которому женское население слободы Дымково лепило свистульки из глины в виде коней, баранов, козлов, уток и других животных; их красили в разные яркие цвета. Позднее, когда праздник потерял своё значение, промысел не только сохранился, но и получил дальнейшее развитие.
    подробнее
    function readMore() {
    var dots = document.getElementById("dots");
    var more = document.getElementById("more");
    var btn = document.getElementById("btn");
    if(dots.style.display === "none"){
    dots.style.display="inline";
    btn.innerHTML="Подробнее";
    more.style.display="none";
    }else{
    dots.style.display="none";
    btn.innerHTML= "Скрыть";
    more.style.display="inline";
    }
    }

  • @foforenok
    @foforenok 2 года назад

    Пойду компьютер куплю а у меня нет денег

  • @kefirfix1048
    @kefirfix1048 2 года назад

    Ничего не понял, и не работает

  • @user-zb9qy9yc4b
    @user-zb9qy9yc4b 3 года назад

    onclick="" в 2019? Ты серьёзно?)))

    • @ITDoctor
      @ITDoctor  3 года назад +1

      Я думаю даже в 2077 ничего не изменится. Какая разница какой год....

  • @bondar.travel
    @bondar.travel 2 года назад

    у меня ничего не получилось ((((((( в чем может быть причина . Подскажите пожалуйста . Вот мой код :
    js :
    function readMore() {
    var dots = document.getElementById ("dots");
    var more = document.getElementById ("more");
    var btn = document.getElementById ("btn");
    if(dots.style.display === "none") {
    dots.style.display = "inline";
    btn.innerHTML = "close";
    more.style.display = "none";
    } else {
    dots.style.display = "none";
    btn.innerHTML = "open";
    more.style.display = "inline";
    }}
    css: #more{display:none}
    html :




    Every caring parent knows
    how important it is to monitor the nutrition of
    the child. This question becomes especially
    important when you... sweets to pamper
    your little one. The uniqueness of our ice
    cream lies in the fact that its composition
    is designed to meet the needs of the child's
    body. Each ingredient of the delicacy undergoes
    an additional quality check.

    • @ITDoctor
      @ITDoctor  2 года назад

      в чем проблема? я запустил ваш код. Конечно пришлось повозиться его собирать из фрагментов. лучше на гитхаб или кодпен загружайте чтобы показать свой код. (ну это уже другая история) вроде как работает скрытие и показ фрагмента текста. Правда ваши теги picture и source мне не понятны для какой цели были использованы...

  • @LegoMasterteam
    @LegoMasterteam Год назад

    main.js:44 Uncaught TypeError: Cannot read properties of null (reading 'style')
    at readMore (main.js:44:14)
    at HTMLSpanElement.onclick (index.html:108:487)
    ошибка кто поможет?

  • @HoffmanH
    @HoffmanH Год назад

    Видосу уже 3 года, может быть поэтому код не работает, всё написал в точности как вы показывали, по итогу скрипт не работает.
    function readMore(){
    var dots = document.detElementById('dots');
    var more = document.detElementById('more');
    var btn = document.detElementById('btn');
    if(dots.style.display ==='none'){
    dots.style.display='inline';
    btn.innerHTML='Подробнее';
    more.style.display='none';
    } else{
    dots.style.display='none';
    btn.innerHTML='Скрыть';
    more.style.display='inline';
    }
    }

    • @HoffmanH
      @HoffmanH Год назад

      Вот html.
      Я долго думал над функционалом кнопки, постоянно удалял и вставлял новый код, писал как внутри Html при помощи тега script так и в отдельном окне JS,
      создавал кнопку которая окрашивала фон, кнопку с выскакивающим окном и пришёл к выводу...
      что будет прикольно сделать это. Дело в том что я лазил по разным сайтам, смотрел оформление, и спустя несколько дней узнал что на многих из них были следующие фичи.
      Кнопки с сылками на источник, кнопки открывающие текст, как в Википедии
      и кнопки открывающие окна, но это слишком
      просто, так как по сути единственное что можно сделать, это оформить выскакивающее окно в CSS.


      Развернуть

    • @HoffmanH
      @HoffmanH Год назад +2

      Нашёл ошибку, причём она очень глупая, всё из-за того что написал случайно det вместо get.