Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.11.2016, 21:36
SV4 SV4 вне форума
Интересующийся
Отправить личное сообщение для SV4 Посмотреть профиль Найти все сообщения от SV4
 
Регистрация: 20.11.2014
Сообщений: 19

Как на jQuery сделать автоматический переход по ссылкам с якорем?
Доброго вечера знатокам JS!
Нужна ваша помощь в написании скрипта автоматического перехода
по ссылкам с якорем на одной странице.

Имеется вот такой html (для примера)
<html>
<body>

<div><img onclick="скрипт">кнопка посмотреть список</img></div>

<div align="center">
<div id="div1"> контейнер <strong>(№1)</strong></div>
<div><a href="#div2" class="GoDiv">ссылка на контейнер (№2)</a></div>
<div> здесь содержимое (№1) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>

<br>
<br>

<div align="center">
<div id="div2"> это контейнер <strong>(№2)</strong></div>
<div><a href="#div3" class="GoDiv">ссылка на контейнер (№3)</a></div>
<div> здесь содержимое (№2) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>

<br>
<br>

<div align="center">
<div id="div3"> это контейнер <strong>(№3)</strong></div>
<div><a href="#div4" class="GoDiv">ссылка на контейнер (№4)</a></div>
<div> здесь содержимое (№3) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
<br>
<br>

<div align="center">
<div id="div4"> контейнер <strong>(№4)</strong></div>
<div><a href="#div5" class="GoDiv">ссылка на контейнер (№5)</a></div>
<div> здесь содержимое (№4) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>

<br>
<br>

<div align="center">
<div id="div5"> это контейнер  <strong>(№5)</strong></div>
<div><a href="#div1" class="GoDiv">ссылка на контейнер (№1)</a></div>
<div> здесь содержимое (№5) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>


</body>
</html>


Третий день безуспешно пытаюсь написать скрипт автоматического перехода по ссылкам с якорем и классом "GoDiv"

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

Теперь в голове всё перемешалось и я совсем запутался.
Если сперва у меня что то немного получалось, то теперь мой
скрипт совсем перестал работать
получился чудо велосипед на jQuery
В общем я его удалил с концами...
И мне ничего не осталось как обратится к спецам то есть к вам!

что должен сделать скрипт:
1) пользователь нажимает кнопку "посмотреть список"
2) скрипт запускается и проходит по очереди по всем ссылкам
у которых указан класс "GoDiv" (количество ссылок всегда разное)
на каждом блоке задерживается на пять секунд.
3) дойдя до последнего блока, делает так же задержку 5 сек. и возвращается к первому. Там и останавливается.

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

Последний раз редактировалось SV4, 19.11.2016 в 21:38.
Ответить с цитированием
  #2 (permalink)  
Старый 20.11.2016, 18:04
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

SV4,
([]+{})[!+[]+!+[]<<+!+[]]
+(prompt+([]+[]))[+[+!+[]+[+[]]]-+!+[]]
+([![]]+[][[]])[+!+[]+[+[]]]
+([]+{})[+[+!+[]+[+[]]]/[!+[]+!+[]]]
+([]+{})[(+!+[]+!+[]+!+[]<<+!+[])+!+[]]
+(![]+[])[+[]]
+(+[][[]]+[]+[])[+!+[]]
+([![]]+[][[]])[+!+[]+[+[]]]
+(![]+[])[!+[]+!+[]];
Ответить с цитированием
  #3 (permalink)  
Старый 21.11.2016, 06:00
SV4 SV4 вне форума
Интересующийся
Отправить личное сообщение для SV4 Посмотреть профиль Найти все сообщения от SV4
 
Регистрация: 20.11.2014
Сообщений: 19

Какой исчерпывающий ответ
Единственное, что я из этого всего понял prompt
Но мне это точно не поможет
Ответить с цитированием
  #4 (permalink)  
Старый 21.11.2016, 09:39
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от SV4
что должен сделать скрипт:
1) пользователь нажимает кнопку "посмотреть список"
2) скрипт запускается и проходит по очереди по всем ссылкам
у которых указан класс "GoDiv" (количество ссылок всегда разное)
на каждом блоке задерживается на пять секунд.
3) дойдя до последнего блока, делает так же задержку 5 сек. и возвращается к первому. Там и останавливается.
Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
#list img {
	cursor: pointer;
}
</style>
<script type='text/javascript'>
$(function (){
	var obj=$('.GoDiv').parent().prev();
	var tmout=2000;
	var pos;
	$('#list img').click(function (){
		pos=0;
		go();
	});
	function go(){
		var id=obj.eq(pos).prop('id');
		++pos;
		if (pos>obj.length){
			id=obj.eq(0).prop('id');
			setTimeout(function(){
				top.location='#'+id;
			},tmout);
			return;
		};
		top.location='#'+id;
		setTimeout(go,tmout);
	};
});
</script>
</head>
<body>
<div id='list'><img src='http://javascript.ru/forum/images/smilies/victory.gif'>кнопка посмотреть список</img></div>
<div align="center">
	<div id="div1"> контейнер <strong>(№1)</strong></div>
	<div><a href="#div2" class="GoDiv">ссылка на контейнер (№2)</a></div>
	<div> 
		здесь содержимое (№1) и в нём некоторый текст....<br>
		-------------------------------------------------------<br>
		-------------------------------------------------------<br>
		-------------------------------------------------------
	</div>
</div>
<br>
<br>
<div align="center">
<div id="div2"> это контейнер <strong>(№2)</strong></div>
<div><a href="#div3" class="GoDiv">ссылка на контейнер (№3)</a></div>
<div> здесь содержимое (№2) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
<br>
<br>
<div align="center">
<div id="div3"> это контейнер <strong>(№3)</strong></div>
<div><a href="#div4" class="GoDiv">ссылка на контейнер (№4)</a></div>
<div> здесь содержимое (№3) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
<br>
<br>
<div align="center">
<div id="div4"> контейнер <strong>(№4)</strong></div>
<div><a href="#div5" class="GoDiv">ссылка на контейнер (№5)</a></div>
<div> здесь содержимое (№4) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
<br>
<br>
<div align="center">
<div id="div5"> это контейнер  <strong>(№5)</strong></div>
<div><a href="#div1" class="GoDiv">ссылка на контейнер (№1)</a></div>
<div> здесь содержимое (№5) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 21.11.2016, 11:03
Аватар для Coriolan161
Профессор
Отправить личное сообщение для Coriolan161 Посмотреть профиль Найти все сообщения от Coriolan161
 
Регистрация: 21.11.2015
Сообщений: 440

SV4,
Это ArrayScript
Ответить с цитированием
  #6 (permalink)  
Старый 21.11.2016, 18:06
SV4 SV4 вне форума
Интересующийся
Отправить личное сообщение для SV4 Посмотреть профиль Найти все сообщения от SV4
 
Регистрация: 20.11.2014
Сообщений: 19

Сообщение от ksa Посмотреть сообщение
Как вариант...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
#list img {
	cursor: pointer;
}
</style>
<script type='text/javascript'>
$(function (){
	var obj=$('.GoDiv').parent().prev();
	var tmout=2000;
	var pos;
	$('#list img').click(function (){
		pos=0;
		go();
	});
	function go(){
		var id=obj.eq(pos).prop('id');
		++pos;
		if (pos>obj.length){
			id=obj.eq(0).prop('id');
			setTimeout(function(){
				top.location='#'+id;
			},tmout);
			return;
		};
		top.location='#'+id;
		setTimeout(go,tmout);
	};
});
</script>
</head>
<body>
<div id='list'><img src='http://javascript.ru/forum/images/smilies/victory.gif'>кнопка посмотреть список</img></div>
<div align="center">
	<div id="div1"> контейнер <strong>(№1)</strong></div>
	<div><a href="#div2" class="GoDiv">ссылка на контейнер (№2)</a></div>
	<div> 
		здесь содержимое (№1) и в нём некоторый текст....<br>
		-------------------------------------------------------<br>
		-------------------------------------------------------<br>
		-------------------------------------------------------
	</div>
</div>
<br>
<br>
<div align="center">
<div id="div2"> это контейнер <strong>(№2)</strong></div>
<div><a href="#div3" class="GoDiv">ссылка на контейнер (№3)</a></div>
<div> здесь содержимое (№2) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
<br>
<br>
<div align="center">
<div id="div3"> это контейнер <strong>(№3)</strong></div>
<div><a href="#div4" class="GoDiv">ссылка на контейнер (№4)</a></div>
<div> здесь содержимое (№3) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
<br>
<br>
<div align="center">
<div id="div4"> контейнер <strong>(№4)</strong></div>
<div><a href="#div5" class="GoDiv">ссылка на контейнер (№5)</a></div>
<div> здесь содержимое (№4) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
<br>
<br>
<div align="center">
<div id="div5"> это контейнер  <strong>(№5)</strong></div>
<div><a href="#div1" class="GoDiv">ссылка на контейнер (№1)</a></div>
<div> здесь содержимое (№5) и в нём некоторый текст....<br>
-------------------------------------------------------<br>
-------------------------------------------------------<br>
-------------------------------------------------------
</div>
</div>
</body>
</html>
Большое Человеческое Спасибо!!!
Только не могу понять почему на последнем блоке двойная задержка
по времени. В какую строку надо смотреть?
Ответить с цитированием
  #7 (permalink)  
Старый 21.11.2016, 18:43
SV4 SV4 вне форума
Интересующийся
Отправить личное сообщение для SV4 Посмотреть профиль Найти все сообщения от SV4
 
Регистрация: 20.11.2014
Сообщений: 19

Сообщение от ksa Посмотреть сообщение
Как вариант...

<script type='text/javascript'>
$(function (){
var obj=$('.GoDiv').parent().prev();
var tmout=2000;
var pos;
$('#list img').click(function (){
pos=0;
go();
});
function go(){
var id=obj.eq(pos).prop('id');
++pos;
if (pos>obj.length){
id=obj.eq(0).prop('id');
setTimeout(function(){
top.location='#'+id;
},tmout);
return;
};
top.location='#'+id;
setTimeout(go,tmout);
};
});
</script>

[/html]
Если я не ошибаюсь то что бы убрать задержку в последнем блоке
надо делать так:
Создать ещё одну переменную, что бы узнать количество
всех блоков. например:
var count_obj = $("a.GoDiv").length;

затем создать условие внутри функции setTimeout:
if (pos==count_obj) {var tmout=1000;}


или я снова горожу велосипед

Последний раз редактировалось SV4, 21.11.2016 в 18:48.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать без участия JQuery? AntonMs Общие вопросы Javascript 4 26.04.2015 06:49
как сделать выборку jquery используя переменную? alex162341 jQuery 10 29.01.2015 20:51
Как сделать как в JQ? faforty Общие вопросы Javascript 8 14.11.2011 01:35
Как сделать кнопку в заголовке jQuery ui dialog flytracer jQuery 2 15.10.2011 17:06
JQUERY - как сделать синхронный выбор/отмену выбора, в нескольких селектах формы sadzeburo jQuery 8 06.10.2011 15:24