Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   "Листание" текста в форме путем нажатия кнопки (https://javascript.ru/forum/misc/15663-listanie-teksta-v-forme-putem-nazhatiya-knopki.html)

dikabraz 08.03.2011 22:29

"Листание" текста в форме путем нажатия кнопки
 
Здравствуйте! помогите пожалоста, я в ява скриптах не шарю... есть задумка для сайта.. напишите пожалоста скриптв котором может содержаться несколько текстов, и что при нажатии кнопки которую так же надо написать, в форме вместо текста 1 появлсялся текст 2, если опять нажать, то текст 2 меняется на текст 4 и так далее. Помогите пожалоста:help:

walik 08.03.2011 23:21

Ну может как то так можно, набросил за пару мин.
<html>
<head>
<script>
pages = 5;
function listNext(page) {
	if (page == 1)
		prev_page = pages;
	else
		prev_page = page-1;
	if (page == pages)
		next_page = 1;
	else
		next_page = page+1;
	prev_id = "page_"+prev_page;
	prev_elem = document.getElementById(prev_id);
	prev_elem.style.display = "none";
	
	id = "page_"+page;
	elem = document.getElementById(id);
	elem.style.display = "block";
	
	document.getElementById('button').innerHTML = '<input type="button" onclick="listNext('+next_page+')" value="Дальше" />';
}
</script>
<style>
.page {
	display: none;
}
</style>
</head>
<body>
<div id="page_1">text page 1 text page 1 text page 1 text page 1 </div>
<div id="page_2" class="page">text page 2 text page 2 text page 2 text page 2 </div>
<div id="page_3" class="page">text page 3 text page 3 text page 3 text page 3 </div>
<div id="page_4" class="page">text page 4 text page 4 text page 4 text page 4 </div>
<div id="page_5" class="page">text page 5 text page 5 text page 5 text page 5 </div>
<div id="button"><input type="button" onclick="listNext(2)" value="Дальше" /></div>
</body>
</html>

dikabraz 08.03.2011 23:36

СПАСИБО БРАТ! Выручил! Я сегодня весь день голову ломал! весь учебник прочитал но ничего непонял! ВЫРУЧИЛ ПРЯМ! СПС ОГРОМНОЕ!

Еще есть маленький вопрос, писать ненадо нече. Просто есть код такой страницы. вот ссыль на эту страницу, код под спойлер не полез.http://svstalker.do.am/14-1-0-1.htm
Там четко написанно что в поле получатель должно стоять Сионист . А как свой текст пихнуть в поле с сообщением? это из системы Юкоз. Я сейчас сохранил файл с кодом страницы в корневой папке сервера. Ннужно только чтоб когда страницу открываешь уже поле с сообщением было заполнено текстом который я введу в шаблоне.

dikabraz 08.03.2011 23:39

А было бы вапще Щикарно если бы в поле с сообщением стоял тот текст который щас отображается в вашем скрипте))

BFAll 01.07.2014 10:07

Цитата:

Сообщение от walik (Сообщение 95611)
Ну может как то так можно, набросил за пару мин.
<html>
<head>
<script>
pages = 5;
function listNext(page) {
	if (page == 1)
		prev_page = pages;
	else
		prev_page = page-1;
	if (page == pages)
		next_page = 1;
	else
		next_page = page+1;
	prev_id = "page_"+prev_page;
	prev_elem = document.getElementById(prev_id);
	prev_elem.style.display = "none";
	
	id = "page_"+page;
	elem = document.getElementById(id);
	elem.style.display = "block";
	
	document.getElementById('button').innerHTML = '<input type="button" onclick="listNext('+next_page+')" value="Дальше" />';
}
</script>
<style>
.page {
	display: none;
}
</style>
</head>
<body>
<div id="page_1">text page 1 text page 1 text page 1 text page 1 </div>
<div id="page_2" class="page">text page 2 text page 2 text page 2 text page 2 </div>
<div id="page_3" class="page">text page 3 text page 3 text page 3 text page 3 </div>
<div id="page_4" class="page">text page 4 text page 4 text page 4 text page 4 </div>
<div id="page_5" class="page">text page 5 text page 5 text page 5 text page 5 </div>
<div id="button"><input type="button" onclick="listNext(2)" value="Дальше" /></div>
</body>
</html>

Уважаемый walik
А можно подправить, чтобы была кнопка "Обратно"?

рони 01.07.2014 10:14

BFAll,
вариант листания вперёд назад на jquery

BFAll 01.07.2014 14:13

рони, спасибо!

Возможно ли реализовать ваш скрипт на чистом JS, без jquery?
Причина: страница сделана со скриптами на jquery-1.6.js - в этой версии данный скрип не работает, если оставить только jquery-1.9.1.js, то начинает сбоить уже сделанное содержание.

рони 01.07.2014 15:55

BFAll,
для версии 1.6
<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>selectable demo</title>
  <script src="http://code.jquery.com/jquery-1.6.js"></script>
  <style>
    p{ display: none; }
    .selected {  display: block;  }
  </style>
  <script>
   $(document).ready(function()
     {
       var p = $("p");
       p.first().addClass("selected");
            $(document).delegate( ".next, .prev", "click", function(event)
         {
           event.preventDefault();
           var selected = $(".selected");
           selected.removeClass("selected");
           if($(this).hasClass("next") ) {
             selected = selected.next('p').size()? selected.next():p.first() ;
           }
           else {
             selected = selected.prev('p').size()? selected.prev():p.last();
           }
           selected.addClass("selected");
         }
       )
     }
   );
  </script>
</head>

<body>
  <a href="" class="prev">prev</a> <a href="" class="next">next</a>
  <p>1</p><p>2</p><p>3</p>
</body>
</html>

BFAll 01.07.2014 21:09

рони, спасибо!

tk.stas 25.02.2015 13:34

Помогите улучшить данный скрипт.
Как сделать так чтоб позиция сохранялась при закрытии и открытии браузера. То есть дошел до 3 закрыл, и открыл на 3.

ksa 25.02.2015 13:54

Цитата:

Сообщение от tk.stas
Как сделать так чтоб позиция сохранялась при закрытии и открытии браузера. То есть дошел до 3 закрыл, и открыл на 3.

Это возможно сделать только в пределах одного компа... Если запустишь на другом - откроет первую или ту, на какой остановились именно на этом компе...
Использовать локальное хранилище или по старинке - куки.

tk.stas 25.02.2015 17:32

Так и надо чтоб на одном компе было.
Подскажите как забить положение в локальное хранилище, и затем считать его. Я просто только начинаю изучать. Пока не могу понять.

ksa 25.02.2015 19:32

Цитата:

Сообщение от tk.stas
как забить положение в локальное хранилище, и затем считать его

Дык!

tk.stas 05.03.2015 22:19

Все никак не получается запомнить позицию в локальное хранилище, и затем открыть ее.
Может кто-нибудь поможет написать такой код на данном примере, а то все никак не получается.

Цитата:

Сообщение от рони (Сообщение 319009)
BFAll,
для версии 1.6
<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>selectable demo</title>
  <script src="http://code.jquery.com/jquery-1.6.js"></script>
  <style>
    p{ display: none; }
    .selected {  display: block;  }
  </style>
  <script>
   $(document).ready(function()
     {
       var p = $("p");
       p.first().addClass("selected");
            $(document).delegate( ".next, .prev", "click", function(event)
         {
           event.preventDefault();
           var selected = $(".selected");
           selected.removeClass("selected");
           if($(this).hasClass("next") ) {
             selected = selected.next('p').size()? selected.next():p.first() ;
           }
           else {
             selected = selected.prev('p').size()? selected.prev():p.last();
           }
           selected.addClass("selected");
         }
       )
     }
   );
  </script>
</head>

<body>
  <a href="" class="prev">prev</a> <a href="" class="next">next</a>
  <p>1</p><p>2</p><p>3</p>
</body>
</html>


рони 05.03.2015 22:40

tk.stas,
:cray:
<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>selectable demo</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <style>
    p{ display: none; }
    .selected {  display: block;  }
  </style>
  <script>
   $(document).ready(function()
     {
       var p = $("p"), i = localStorage.getItem("indx")||0;
       p.eq(i).addClass("selected");
            $(document).on("click", ".next, .prev",  function(event)
         {
           event.preventDefault();
           var selected = $(".selected");
           selected.removeClass("selected");
           if($(this).hasClass("next") ) {
             selected = selected.next('p').size()? selected.next():p.first() ;
           }
           else {
             selected = selected.prev('p').size()? selected.prev():p.last();
           }
           selected.addClass("selected");
           i = p.index(selected);
           localStorage.setItem("indx", i);
         }
       )
     }
   );
  </script>
</head>

<body>
  <a href="" class="prev">prev</a> <a href="" class="next">next</a>
  <p>1</p><p>2</p><p>3</p>
</body>
</html>

Sasha2000 16.08.2015 21:02

А на чистом js данный скрипт не поможите сделать?

Цитата:

Сообщение от рони (Сообщение 359788)
tk.stas,
:cray:
<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>selectable demo</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <style>
    p{ display: none; }
    .selected {  display: block;  }
  </style>
  <script>
   $(document).ready(function()
     {
       var p = $("p"), i = localStorage.getItem("indx")||0;
       p.eq(i).addClass("selected");
            $(document).on("click", ".next, .prev",  function(event)
         {
           event.preventDefault();
           var selected = $(".selected");
           selected.removeClass("selected");
           if($(this).hasClass("next") ) {
             selected = selected.next('p').size()? selected.next():p.first() ;
           }
           else {
             selected = selected.prev('p').size()? selected.prev():p.last();
           }
           selected.addClass("selected");
           i = p.index(selected);
           localStorage.setItem("indx", i);
         }
       )
     }
   );
  </script>
</head>

<body>
  <a href="" class="prev">prev</a> <a href="" class="next">next</a>
  <p>1</p><p>2</p><p>3</p>
</body>
</html>


рони 16.08.2015 21:49

Sasha2000,
а сами начать код?

EmperioAf 16.08.2015 22:23

Цитата:

Сообщение от Sasha2000
А на чистом js данный скрипт не поможите сделать?

пройдёмся по коду, что надо заменить:
1) addClass, removeClass и hasClass заменяются соответственно на classList.add, classList.remove и classList.contains
Подробнее про classList тут:
https://developer.mozilla.org/ru/doc...ment/classList
2)$ можно заменить на document.querySelectorAll или на document.querySelector (если в дальнейшем на то, что мы выбираем селектором, пытаются повесить обработчик события)
$(document).ready(function(){
//code
}

можно заменить на window.onload = function(){
//code
}

3) p.eq(i) можно заменить на p[i]
4)$(document).on("click", ".next, .prev", function(event){//code});
очень условно можно заменить на document.querySelector('.next, .prev').addEventListener('click', function(event){//code}, false);
5)$(this) можно заменить на event.target
ну и т.д. в общем то по каждой функции идёте на:
https://api.jquery.com
и изучаете, что она делает и ищете в учебнике как можно это сделать на нативном JS
А вообще проще в теге head прописать:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>

и не думать больше в дальнейшем как переписать с JQuery на JS :)

tk.stas 25.08.2015 12:08

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

Получается не ахти. Зависаю уже на p[i], а что делать с

if(event.target.classList.contains("next") ) {
             selected = selected.next('p').size()? selected.next():p.first() ;
           }
           else {
             selected = selected.prev('p').size()? selected.prev():p.last();
           }


вообще не пойму.

<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>selectable demo</title>
  <style>
    p{ display: none; }
    .selected {  display: block;  }
  </style>
  <script>
   window.onload = function(){
       var p = document.querySelector("p"), i = localStorage.getItem("indx");
        p[i].classList.add("selected");
     document.querySelector('.next, .prev').addEventListener('click', function(event){
       event.preventDefault();
           var selected = document.querySelector(".selected");
           selected.classList.remove("selected");
           if(event.target.classList.contains("next") ) {
             selected = selected.next('p').size()? selected.next():p.first() ;
           }
           else {
             selected = selected.prev('p').size()? selected.prev():p.last();
           }
           selected.classList.add("selected");
           i = p.index(selected);
           localStorage.setItem("indx", i);
     }, false);
}
  </script>
</head>

<body>
  <a href="" class="prev">prev</a> <a href="" class="next">next</a>
  <p>1</p><p>2</p><p>3</p>
</body>
</html>


Буду благодарен за помощь:)

рони 25.08.2015 13:00

tk.stas,
<!DOCTYPE html>

<html lang="en">
<head>
  <meta charset="utf-8">
  <title>selectable demo</title>
  <style>
    p{ display: none; }
    .selected {  display: block;  }
  </style>
  <script>
   window.onload = function(){
       var p = document.querySelectorAll("p"), i = +localStorage.getItem("indx")||0;
        p[i].classList.add("selected");
     document.querySelector('.next').addEventListener('click', function(event){
          event.preventDefault();
            p[i].classList.remove("selected");
            i = ++i%p.length;
            p[i].classList.add("selected");
            localStorage.setItem("indx", i);
     }, false);
     document.querySelector('.prev').addEventListener('click', function(event){
          event.preventDefault();
            p[i].classList.remove("selected");
            i--;
            i < 0 && (i = p.length-1);
             p[i].classList.add("selected");
            localStorage.setItem("indx", i);
     }, false);
}
  </script>
</head>

<body>
  <a href="" class="prev">prev</a> <a href="" class="next">next</a>
  <p>1</p><p>2</p><p>3</p>
</body>
</html>

tk.stas 25.08.2015 13:27

Класс, спасибо!


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