Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Автоматическая смена ссылок (https://javascript.ru/forum/dom-window/4470-avtomaticheskaya-smena-ssylok.html)

peter888 24.07.2009 17:32

Автоматическая смена ссылок
 
Здрасте.
Есть блок:

<div style="position: fixed; right: 20px; top: 10px;" align="right">
<a href="ссылка" >Заголовок</a>
</div>

В нем есть ссылка (<a>). Мне надо чтоб она менялась через некоторое время так, чтоб страничка не перегружалась. Возможно ли так?
Тоесть есть массив ссылок (подгружаеться из БД при загрузек странички через пхп - я зная как делать), и рандомом через некоторое время (например через 10 секунд) ссылка менялась (и ее заголовок).
Можна такой скрипт написать?

Допустим у меня есть массив Mas[]
и в нем
Mas[0] - "<a href="ссылка_1" >Заголовок_1</a>"
Mas[1] - "<a href="ссылка_2" >Заголовок_2</a>"
Mas[2] - "<a href="ссылка_3" >Заголовок_3</a>"
Mas[3] - "<a href="ссылка_4" >Заголовок_4</a>"
...
Mas[n-1] - "<a href="ссылка_n" >Заголовок_n</a>"

Как зделать, чтоб менялись ссалки каждіх 10 сек.

Или может луче поместить в два масивва - отдельно ссылочки и отдельно заголовки?

Kolyaj 24.07.2009 17:38

<div id="links" style="position: fixed; right: 20px; top: 10px;" align="right">
    <a href="ссылка" >Заголовок</a>
</div>

В конце html файла скрипт
var currentLink = 0;
(function() {
    document.getElementById('links').innerHTML = Mas[currentLink++];
    if (currentLink >= Mas.length) 
        currentLink = 0;
    setTimeout(arguments.callee, 10000);
})();

peter888 24.07.2009 17:48

Шот не катит :(

<body bgcolor="#001816">


<script language="JavaScript">
var Mas = new Array()

Mas[0] = "<a href="ссылка1" >Заголовок1</a>";
Mas[1] = "<a href="ссылка2" >Заголовок2</a>";
Mas[2] = "<a href="ссылка3" >Заголовок3</a>";

</script>

<div id="links" style="position: fixed; right: 20px; top: 10px;" align="right">
<a href="ссылка" >Заголовок</a>
</div>


<script language="JavaScript">
var currentLink = 0;
(function() {
document.getElementById('links').innerHTML = Mas[currentLink++];
if (currentLink >= Mas.length)
currentLink = 0;
setTimeout(arguments.callee, 100);
})();
</script>

</body>

Kolyaj 24.07.2009 17:51

Цитата:

Сообщение от peter888
"<a href="ссылка1" >Заголовок1</a>"

Кавычки вложенные.

peter888 24.07.2009 17:53

Заменил "<a href="ссылка1" >Заголовок1</a>" на '<a href="ссылка1" >Заголовок1</a>'
Работает. Спасибо тебе. Будь благословен, Kolyaj,

peter888 24.07.2009 18:01

Еще вопросик:
А почему не работает

<script language="JavaScript">
var currentLink = 0;
(function() {
document.getElementById('links').innerHTML = Mas[currentLink++];
currentLink = Math.random(Mas.length)-1; //????????????????????????
setTimeout(arguments.callee, 100);
})();
</script>

Kolyaj 24.07.2009 18:05

http://javascript.ru/Math.random

peter888 24.07.2009 18:13

Спасибо, я думал принцып как в паскале.
Еще раз спасибо тебе.
Пусть Бог благословит тебя.

Вот правельный результат того, что я хотел:

<body bgcolor="#001816">


<script language="JavaScript">
var Mas = new Array()

 Mas[0] = '<a href="ссылка1" >Заголовок1</a>';
 Mas[1] = '<a href="ссылка2" >Заголовок2</a>';
 Mas[2] = '<a href="ссылка3" >Заголовок3</a>';


 
</script>

<div id="links" style="position: fixed; right: 20px; top: 10px;" align="right">
    <a href="ссылка" >Заголовок</a>
</div> 
		 

<script language="JavaScript">
var currentLink = Math.floor(Math.random() * Mas.length);
(function() {
    document.getElementById('links').innerHTML = Mas[currentLink++];

        currentLink = Math.floor(Math.random() * Mas.length) ;

    setTimeout(arguments.callee, 10000);
})();
</script>

</body>

Kolyaj 24.07.2009 18:19

(function() {
    document.getElementById('links').innerHTML = Mas[Math.floor(Math.random() * Mas.length)];
    setTimeout(arguments.callee, 10000);
})();

peter888 24.07.2009 18:25

Спасибо. Извини, может достаю, но хочу еще одно зделать.
А этот форум найлучший и здесь можно очень быстро получить ответ, за что вам спасибо.
Мне надо, чтоб когда мышка будет над (onmouseover) этим блоком (или, если не сложно, над ссылкой), то тогда ссылка перестает меняться. наверное както приостановить выполнение функции. А при onmouseout опять заработала. Или может другим путем.
Можно так сделать?

Kolyaj 24.07.2009 18:33

var linksEl = document.getElementById('links');
linksEl.onmouseover = function() { this._mouseover = true; };
linksEl.onmouseout  = function() { this._mouseover = false; };
(function() {
    if (!linksEl._mouseover)
        linksEl.innerHTML = Mas[Math.floor(Math.random() * Mas.length)];
    setTimeout(arguments.callee, 10000);
})();

peter888 24.07.2009 18:37

Супер. ОГРОМНОЕ СПАСИБО, Kolyaj, ты просто супер прогер.

На этом все.
-----------------------------------------
<body bgcolor="#001816">


<script language="JavaScript">
var Mas = new Array()

Mas[0] = '<a href="ссылка1" >Заголовок1</a><br />iutryityri';
Mas[1] = '<a href="ссылка2" >Заголовок2</a><br />hrethytru';
Mas[2] = '<a href="ссылка3" >Заголовок3</a><br />864urtiuty';
Mas[3] = '<a href="ссылка4" >Заголовок4</a><br />h f jgsgfg shjhfd';
Mas[4] = '<a href="ссылка5" >Заголовок5</a><br />iytriytro';

</script>

<div id="links" style="position: fixed; right: 20px; top: 10px;" align="right" onmouseover="rt">
<a href="ссылка" >Заголовок</a>
</div>

<script language="JavaScript">
var linksEl = document.getElementById('links');
linksEl.onmouseover = function() { this._mouseover = true; };
linksEl.onmouseout = function() { this._mouseover = false; };
(function() {
if (!linksEl._mouseover)
linksEl.innerHTML = Mas[Math.floor(Math.random() * Mas.length)];
setTimeout(arguments.callee, 10000);
})();
</script>

</body>
-----------------------------------------

Еше раз спасибо!

HelpeR 25.07.2009 13:50

Kolyaj,
Мог бы объяснить вот этот момент
setTimeout(arguments.callee, 10000);
т.е. точнее arguments.callee

Riim 25.07.2009 14:21

http://javascript.ru/arguments

B~Vladi 27.07.2009 09:56

Kolyaj, да ты прям святой для peter888:D

Kolyaj 27.07.2009 12:07

B~Vladi,
сам в шоке.

peter888 27.07.2009 19:56

Цитата:

Сообщение от B~Vladi (Сообщение 25389)
Kolyaj, да ты прям святой для peter888:D

Ребята, а разве нельзя благословлять друг друга?
Поверьте, наше будущее много зависит от того, что мы говорим. Слово - он имеет силу создавать. И если с верой то оно так и станется.
Вспомните, когда Бог создавал мир, то он не думал, а именно сказал: "Создадим то и то..." (Битье 1:26).
Так что ты, B~Vladi, тоже будь благословен!

B~Vladi 28.07.2009 09:28

Я плачу...

Цитата:

Сообщение от peter888
Так что ты, B~Vladi, тоже будь благословен!

:blink: и тебе того же...

Riim 28.07.2009 10:15

Цитата:

Сообщение от peter888
когда Бог создавал мир, то он не думал

То-то я и смотрю, что ошибся пару раз. Где эльфы, епт?

Цитата:

Сообщение от peter888
Ребята, а разве нельзя благословлять друг друга?

По-джедайски круче. Ага.
Да прибудет с вами сила.

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


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