Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Вывод информации при нажатии кнопки читать далее (https://javascript.ru/forum/dom-window/48328-vyvod-informacii-pri-nazhatii-knopki-chitat-dalee.html)

vacuumtrade 29.06.2014 19:01

Вывод информации при нажатии кнопки читать далее
 
Ребята, очень прошу о помощи. Есть очень длинная страница, и есть скрипт который скрывает ее часть (еле нашел то, что нужно в данной ситуации). все хорошо, все работает. но как сделать так, чтобы сначала выводилась одна часть страницы, к примеру 1000 px, затем при нажатии кнопки читать далее, следующая часть размером 1000 px и т.д. пока не закончится страница?! Помогите, пожалуйста, очень прошу:)
<script>
    $(function(){
        if($('#ta').length){
            blok_height = Number($('#ta').css('height').replace('px',''));
             
            if(blok_height > 80){
               $('#ta').css('max-height','80px');
               $('.read-next').show();  
            } 
       }
    });
    
    $('.read-next').live('click', function(){
        
        if($('#ta').css('max-height') != 'none'){
           $('#ta').css('max-height','');
           $(this).text('Скрыть');
        } else {
           $('#ta').css('max-height','80px');     
           $(this).text('Читать далее...');
        }
        
        return false;
    });
</script>

<div style="height:'100%'">
		<div id="ta" style="overflow:hidden">текст</div>		
		<a class="read-next" style="display:none;" href="#">Читать далее...</a>
</div>

рони 29.06.2014 19:50

vacuumtrade,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
#ta{
    background:#3C3;
    color:#66F;
    height:100px;
    width:600px;
    transition:all 1s;
    -moz-transition:all 1s;
    -webkit-transition:all 1s;
    -o-transition:all 1s;
  }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
  <script>
 $(function ()
  {  var h = 50, t = $('#ta'), max = t[0].scrollHeight, min = 22;
   $('.read-next').on('click', function (event)
  {
   var H = t.height();
   if(H == max){H = min}
   else if (H  + h > max){H = max}
   else {H += h};
   t.height(H);
   $(this).text(H == max ? 'Скрыть этот бред' : 'Читать далее...')
   return false
  })
  })
  </script>
</head>

<body>
  <div style="height:'100%'">
    <div id="ta" style="overflow:hidden">
      Товарищи! консультация с широким активом требуют
      определения и уточнения существенных финансовых и
      административных условий. Не следует, однако
      забывать, что укрепление и развитие структуры
      влечет за собой процесс внедрения и модернизации
      направлений прогрессивного развития.
      Разнообразный и богатый опыт начало повседневной
      работы по формированию позиции позволяет оценить
      значение форм развития. Товарищи! начало
      повседневной работы по формированию позиции
      позволяет выполнять важные задания по разработке
      форм развития. Товарищи! сложившаяся структура
      организации требуют от нас анализа систем
      массового участия. Таким образом новая модель
      организационной деятельности позволяет оценить
      значение позиций, занимаемых участниками в
      отношении поставленных задач. Разнообразный и
      богатый опыт постоянное
      информационно-пропагандистское обеспечение нашей
      деятельности способствует подготовки и
      реализации модели развития
    </div><a class="read-next" href="#">Читать далее...</a>
  </div>
</body>
</html>

vacuumtrade 29.06.2014 20:50

Спасибо большое. То, что нужно. Только вы перепутали значения max и min местами. Но слава богу разобрался. А скажите еще пожалуйста, как сделать, чтобы кнопка "скрыть этот бред" вылазила только в конце страницы?
Пробовал установить значение max и с помощью этого удалось ограничить длину. Но это не подходит, ведь все страницы разной длины.
Подскажите, пожалуйста. :-?

рони 29.06.2014 20:56

vacuumtrade,
неосилил ваш текст

vacuumtrade 29.06.2014 21:01

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

рони 29.06.2014 21:19

Цитата:

Сообщение от vacuumtrade
ну, в общем. мне нужно, чтобы кнопка "скрыть этот бред" вылазила только тогда, когда заканчивается текст элемента.

а сейчас разве иначе?

vacuumtrade 29.06.2014 21:38

рони,
да. в том варианте в котором вы мне скинули скрипт, он глючил. я поменял местами значение мах и мин, получилось так и работает все хорошо:
<script>
 $(function ()
  {  var h = 3333, t = $('#more_promocodes'), max = 16100, min = t[0].scrollHeight;
   $('.read-next').on('click', function (event)
  {
   var H = t.height();
   if(H == max){H = min}
   else if (H  + h > max){H = max}
   else {H += h};
   t.height(H);
   $(this).text(H == max ? 'Вернуться наверх' : 'Еще больше промокодов')
   return false
  })
  })
  </script>

Правда в данном случае, надо устанавливать длину элемента (страницы) в значении max. и здесь я сталкиниваюсь с проблемой, потому что длина каждой страницы разная. если установить немного больше, то остается ненужный кусок.

рони 29.06.2014 21:46

vacuumtrade,
мне сложно понять что вы делаите со скриптом и ещё сложнее понять почему нельзя если вам так нужно в максимуме поставить размер страницы ?
max = $('html').height()

vacuumtrade 29.06.2014 21:59

рони,
Хорошо. Попробую по-другому. Что изменить в вашем скрипте, чтобы каждый раз, при нажатии кнопки "больше", открывалось 3000 px?

рони 29.06.2014 22:05

Цитата:

Сообщение от vacuumtrade
открывалось 3000 px?

достаточно h = 3000 - почему надо что-то ещё менять непонятно

vacuumtrade 29.06.2014 23:24

рони,
когда ставлю 3000 туда куда вы сказали, в итоге получается при нажатии кнопки в первый раз, объект уменьшается до значения, заданного в позиции Min(Но это изменить можно и не проблема). В следующий раз, когда нажимаю на кнопку появляется 3000 px. и т.д. пока не заканчивается высота div id="ta", которая была задана через css.
проблема в том, что мне не нужно чтобы высота была фиксирована, потому что все страницы разной длины, соответственно длина каждого элемента будет разной. понимаете?

рони 29.06.2014 23:30

vacuumtrade,
вы сделайте макет а пока вы описываите чудеса у вас происходящие мне сложно вам что-то подсказать

vacuumtrade 29.06.2014 23:32

рони,
в смысле макет. вы имеете ввиду скриншот?

рони 29.06.2014 23:42

vacuumtrade,
посмотрите пост номер 2 -- там макет -- там жмёте далее -- див раскрывается -- если див полностью раскрылся -- надпись сменилась и див можно закрыть -- как у вас на самом деле код я незнаю -- код во втором посте мои догадки - далее сами

vacuumtrade 29.06.2014 23:59

рони,
странно, когда вставляю код сюда, все работает. скажите, есть ли разница между скриптами для php и для html. может данный скрипт некорректно работает у меня, потому что сайт работает на админке wordpress?

рони 30.06.2014 00:20

vacuumtrade,
не грузите jquery если оно у вас уже есть - больше добавить нема

vacuumtrade 30.06.2014 00:26

рони,
разобрался в чем проблема. когда данный скрипт работает с текстом, все вообщем хорошо. когда пытаюсь вывести обычные элементы, тоже все ок.
но когда вместо текста пытаюсь вывести блок div, который ajaxom подгружает данные из xml таблицы, то все идет наперекосяк. в чем может быть проблема?

рони 30.06.2014 00:49

vacuumtrade,
запускать надо скрипт после - ajax или строку 23 пренести в 25 -- может поможет

vacuumtrade 30.06.2014 01:22

рони,
спасибо большое. помогла перестановка строчки:) очень выручили! если вдруг понадобится какая-нибудь помощь - обращайтесь. за мной должок) раньше был копирайтером и не могу сказать что плохим. если вдруг понадобится, могу написать какой-нибудь текст на пару тысяч символов в качестве бонуса.

vacuumtrade 30.06.2014 01:24

еще хотел спросить. можно ли как-то сделать так, чтобы кнопка "скрыть этот бред" при нажатии вела в самый верх страницы? сорри за надоедливость!! и спасибо за помощь:)

рони 30.06.2014 01:44

vacuumtrade,
:cray:
if(H == max){H = min;$('body,html').animate({scrollTop: 0}, 600) }

vacuumtrade 30.06.2014 02:01

рони,
целый день тупил, а сейчас так вообще...на какую строчку вставлять-то? когда вставляю между одной из 26-31, то получается что вверх скролит на предпоследнем клике, все еще на кнопке "читать далее". а мне нужно чтобы вверх скролило при клике на 'Скрыть этот бред'.

рони 30.06.2014 02:03

vacuumtrade,
добавить в строку 27 $('body,html').animate({scrollTop: 0}, 600)

рони 30.06.2014 02:06

vacuumtrade,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
#ta{
    background:#3C3;
    color:#66F;
    height:100px;
    width:100%;
    transition:all 1s;
    -moz-transition:all 1s;
    -webkit-transition:all 1s;
    -o-transition:all 1s;
  }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
  <script>
 $(function ()
  {  var h = 50, t = $('#ta'), max = t[0].scrollHeight, min = 22;
   $('.read-next').on('click', function (event)
  {
   var H = t.height();
   if(H == max){H = min;$('body,html').animate({scrollTop: 0}, 600) }
   else if (H  + h > max){H = max}
   else {H += h};
   t.height(H);

   $(this).text(H == max ? 'Скрыть этот бред' : 'Читать далее...')
   return false
  })
  })
  </script>
</head>

<body>
  <div style="height:100%; margin-top: 1000px">
    <div id="ta" style="overflow:hidden">
      Товарищи! консультация с широким активом требуют
      определения и уточнения существенных финансовых и
      административных условий. Не следует, однако
      забывать, что укрепление и развитие структуры
      влечет за собой процесс внедрения и модернизации
      направлений прогрессивного развития.
      Разнообразный и богатый опыт начало повседневной
      работы по формированию позиции позволяет оценить
      значение форм развития. Товарищи! начало
      повседневной работы по формированию позиции
      позволяет выполнять важные задания по разработке
      форм развития. Товарищи! сложившаяся структура
      организации требуют от нас анализа систем
      массового участия. Таким образом новая модель
      организационной деятельности позволяет оценить
      значение позиций, занимаемых участниками в
      отношении поставленных задач. Разнообразный и
      богатый опыт постоянное
      информационно-пропагандистское обеспечение нашей
      деятельности способствует подготовки и
      реализации модели развития
    </div><a class="read-next" href="#">Читать далее...</a>
  </div>
</body>
</html>

vacuumtrade 30.06.2014 02:09

рони,
сейчас оно сразу скролит вверх, при нажатии на кнопку читать далее...:(

рони 30.06.2014 02:13

vacuumtrade,
здесь скролит?

vacuumtrade 30.06.2014 02:14

рони,
здесь все хорошо работает. наверное опять проблема с блоком, подгружаемым аяксом.

chelfenix 07.05.2015 06:13

Скажите пожалуйста,
1. Как добавить к скрипту в посте №2 из данной темы еще две кнопки "Показать все", "Скрыть все", но так, чтобы при полном раскрытии они исчезали?
2. Как сделать так, чтобы максимальная высота определялась с учетом содержимого?
То есть если изначально есть
<div style="height:'100%'">
    <div id="ta" style="overflow:hidden">
    <div>Товарищи!</div>
    <div>Граждане!</div>
    <div>Белые мишки!</div>
    </div>
    <a class="read-next" href="#">Читать далее...</a>
  </div>

А стало:
<div style="height:'100%'">
    <div id="ta" style="overflow:hidden">
    <div>Товарищи!</div>
    <div style="display:none">Граждане!</div>
    <div style="display:none">Белые мишки!</div>
    </div>
    <a class="read-next" href="#">Читать далее...</a>
  </div>

То высота #ta равнялась высоте <div>Товарищи!</div>?

Буду очень признателен за помощь.

рони 07.05.2015 11:54

chelfenix,
представляешь не осилил речей твоих :)

chelfenix 07.05.2015 16:33

В начале темы было предложено решение

<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
#ta{
    background:#3C3;
    color:#66F;
    height:100px;
    width:600px;
    transition:all 1s;
    -moz-transition:all 1s;
    -webkit-transition:all 1s;
    -o-transition:all 1s;
  }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
  <script>
 $(function ()
  {  var h = 50, t = $('#ta'), max = t[0].scrollHeight, min = 22;
   $('.read-next').on('click', function (event)
  {
   var H = t.height();
   if(H == max){H = min}
   else if (H  + h > max){H = max}
   else {H += h};
   t.height(H);
   $(this).text(H == max ? 'Скрыть этот бред' : 'Читать далее...')
   return false
  })
  })
  </script>
</head>

<body>
  <div style="height:'100%'">
    <div id="ta" style="overflow:hidden">
      Товарищи! консультация с широким активом требуют
      определения и уточнения существенных финансовых и
      административных условий. Не следует, однако
      забывать, что укрепление и развитие структуры
      влечет за собой процесс внедрения и модернизации
      направлений прогрессивного развития.
      Разнообразный и богатый опыт начало повседневной
      работы по формированию позиции позволяет оценить
      значение форм развития. Товарищи! начало
      повседневной работы по формированию позиции
      позволяет выполнять важные задания по разработке
      форм развития. Товарищи! сложившаяся структура
      организации требуют от нас анализа систем
      массового участия. Таким образом новая модель
      организационной деятельности позволяет оценить
      значение позиций, занимаемых участниками в
      отношении поставленных задач. Разнообразный и
      богатый опыт постоянное
      информационно-пропагандистское обеспечение нашей
      деятельности способствует подготовки и
      реализации модели развития
    </div><a class="read-next" href="#">Читать далее...</a>
  </div>
</body>
</html>


В нем есть сслыка/кнопка

<a class="read-next" href="#">Читать далее...</a>

Она открывает #ta частями, а когда блок показан полностью, текст меняется на "Скрыть этот бред", а нажатие на него снова сворачивает #ta.

Хотелось бы добавить
<a class="read-all" href="#">Открыть все</a>
.
По нажатию сразу разворачивает #ta. Если #ta развернут - пропадает.

<a class="roll-up" href="#">Свернуть все все</a>
.
По нажатию сворачивает #ta. Если #ta развернут - пропадает.


Далее. Высота #ta получается фиксированной и если после загрузки страницы в нем скрыть часть контента, то тогда получается вот такая пустота
http://prntscr.com/72jn4d

Может ли этого избежать и сделать так, чтобы максимальная высота #ta равнялась высоте содержимого?

рони 07.05.2015 18:32

chelfenix,
так ?
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
#ta{
    background:#3C3;
    color:#66F;
    height:100px;
    width:600px;
    transition:all 1s;
    -moz-transition:all 1s;
    -webkit-transition:all 1s;
    -o-transition:all 1s;
  }
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
  <script>
 $(function ()
  {  var t = $('#ta'), max , min = 0;
   $('.read-next').on('click', function (event)
  {max = t[0].scrollHeight
   var H = t.height();
   t.height(H < max ? max : min);
   $(this).text(H < max ? 'Свернуть все все' : 'Открыть все')
   return false
  })
  })
  </script>
</head>

<body>
  <div style="height:'100%'">
    <div id="ta" style="overflow:hidden">
      Товарищи! консультация с широким активом требуют
      определения и уточнения существенных финансовых и
      административных условий. Не следует, однако
      забывать, что укрепление и развитие структуры
      влечет за собой процесс внедрения и модернизации
      направлений прогрессивного развития.
      Разнообразный и богатый опыт начало повседневной
      работы по формированию позиции позволяет оценить
      значение форм развития. Товарищи! начало
      повседневной работы по формированию позиции
      позволяет выполнять важные задания по разработке
      форм развития. Товарищи! сложившаяся структура
      организации требуют от нас анализа систем
      массового участия. Таким образом новая модель
      организационной деятельности позволяет оценить
      значение позиций, занимаемых участниками в
      отношении поставленных задач. Разнообразный и
      богатый опыт постоянное
      информационно-пропагандистское обеспечение нашей
      деятельности способствует подготовки и
      реализации модели развития
    </div><a class="read-next" href="#">Открыть все</a>
  </div>
</body>
</html>

Andvz24 10.07.2015 11:19

Использую данный скрипт для сворачивания отзывов, все работает (кроме плавности).
Как изменить скрипт, чтобы при коротком отзыве (например 300 символов или высота блока не превышает например 100px) ссылка свернуть/развернуть не появлялась?

рони 10.07.2015 16:09

Andvz24,
может вам хватит варианта по минимальному количеству строк смотреть ещё вариант обрезния строк

Andvz24 13.07.2015 10:52

К сожалению данный скрипт не захотел работать в cms

рони 13.07.2015 11:03

Andvz24,
может вы css не ставите?

Andvz24 13.07.2015 11:17

css прописал. Выношу скрипт в отдельный файл и не хочет работать (в cms скрипт прописал, подключается с загрузкой страницы). Предыдущий скрипт сразу заработал, но там ссылка явно прописывается, а тут скрипт добавляет

рони 13.07.2015 11:30

Andvz24,
так может у вас один плагин подключен без инициализации или инициализация неправильная ?

Andvz24 13.07.2015 11:48

рони,
Извиняюсь за собственную тупость: не совсем понял про плагин.
Что я делаю:
-переношу скрипт в отдельный файл (только код скрипта), то что перед <body> + код перед </body>
-оборачиваю отзывы на сайте в div class="ta"
-обязательно css
-в шаблоне сайта подключаю сам скрипт (<script src="/bitrix/templates/.default/js/hidden_script.js"></script>)
все

вот еще один скрипт, но немного не хватает знаний, чтобы изменить его и появилась ссылка скрыть https://jsfiddle.net/rLy7f8r8/4/

рони 13.07.2015 13:10

Цитата:

Сообщение от Andvz24
то что перед <body> + код перед </body>

а $ к тому времени жива?
может попробовать вместо
$(".ta").correctLines({
    fullText: true,
    maxLine: 4,
    moreText: "Открыть все",
    lessText: "Свернуть",
    afterLength: " "
})

сделать
jQuery(".ta").correctLines({
    fullText: true,
    maxLine: 4,
    moreText: "Открыть все",
    lessText: "Свернуть",
    afterLength: " "
})

Andvz24 13.07.2015 13:53

рони,
к сожалению не помогло. Может дело в том, что я вырвал 2 части когда и закинул их в один файл, при том, что они как то не последовательно вызываются. Дивы не появляются, надпись тоже "свернуть/развернуть"


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