Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ротатор баннеров (https://javascript.ru/forum/misc/16682-rotator-bannerov.html)

vladimir7 17.04.2011 22:03

Ротатор баннеров
 
Добрый вечер дамы и господа:thanks: . Имеется подобный скрипт, предназначенный для ротатации баннеров. В папке "ban" находятся 3 разных баннера одинакового размера. В данном случае ссылка со всех трёх картинок ведёт на один и тот-же сайт.

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

<script language="JavaScript">
i=0;
img_a=new Array()

img_a[0]=new Image()
img_a[1]=new Image()
img_a[2]=new Image()

img_a[0].src="ban/1.jpg"
img_a[1].src="ban/2.jpg"
img_a[2].src="ban/3.jpg"
function img_b()
{
document.images[0].src=img_a[i].src
document.images[0].src=img_a[i].src
document.images[0].src=img_a[i].src
i++
if(i>2) i=0;
setTimeout("img_b()", 4000)
}

</script>

<body onLoad=img_b()>
<a href="http://www.mail.ru" target="_blank" title="Mail"><img src="ban/1.jpg"></a>
</body>


В javascript я полный чайник со свистком :( , собственно поэтому и выношу на всеобщее обсуждение этот простой вопрос.

melky 18.04.2011 20:21

вам не хватает фазы луны ( рандома, он же случайность )

<script language="JavaScript">

img_a=new Array()

img_a[0]=new Image()
img_a[1]=new Image()
img_a[2]=new Image()

img_a[0].src="ban/1.jpg"
img_a[1].src="ban/2.jpg"
img_a[2].src="ban/3.jpg"

i = Math.floor( Math.random( ) * ( - 3 ) ) + 4 // случайное число между 1 и 3

function img_b()   {


document.images[0].src=img_a[i].src;

i++;

if( i == 3 ) i = 0 ;

setTimeout("img_b()", 4000);

}

</script>

<body onLoad=img_b()>
<a href="http://www.mail.ru" target="_blank" title="Mail"><img src="ban/1.jpg"></a>
</body>

рони 18.04.2011 20:49

melky,
:no: Вопрос был про ссылку а не про случайное появление картинок

poorking 18.04.2011 21:08

Ваш скрипт только картинку подменяет в баннере, а не весь баннер.
Если картинка просто обернута в гиперссылку, то можно к href обращаться document.images[0].parentNode.href так например, в любом случае до родителя добраться можно

рони 18.04.2011 21:18

poorking,
:thanks:
<!DOCTYPE html>
<html>
<head>
  <title></title>
<script language="JavaScript">
var img_href =['http://www.mail.ru','http://www.google.ru/','http://search.yahoo.com/'],
img_title = ['Mail','Google','Yahoo'],
i = 0,
img_a=new Array();
img_a[0]=new Image();
img_a[1]=new Image();
img_a[2]=new Image();
img_a[0].src="http://javascript.ru/forum/images/smilies/victory.gif";
img_a[1].src="http://javascript.ru/forum/images/smilies/dance3.gif";
img_a[2].src="http://javascript.ru/forum/images/smilies/agree.gif";
function img_b()   {
var n = i%3;
document.images[0].src=img_a[n].src;
document.images[0].parentNode.href=img_href[n];
document.images[0].parentNode.title=img_title[n];
i++;
setTimeout("img_b()", 4000);
}
window.onload=img_b
</script>
</head>
<body>
<a href="http://www.mail.ru" target="_blank" title="Mail"><img src="http://javascript.ru/forum/images/smilies/victory.gif"></a>
</body>
</html>

vladimir7 18.04.2011 22:50

Цитата:

Сообщение от poorking (Сообщение 101285)
Ваш скрипт только картинку подменяет в баннере, а не весь баннер.

Действительно... :-?


Цитата:

Сообщение от рони (Сообщение 101286)
poorking,
:thanks:
<!DOCTYPE html>
<html>
<head>
  <title></title>
<script language="JavaScript">
var img_href =['http://www.mail.ru','http://www.google.ru/','http://search.yahoo.com/'],
img_title = ['Mail','Google','Yahoo'],
i = 0,
img_a=new Array();
img_a[0]=new Image();
img_a[1]=new Image();
img_a[2]=new Image();
img_a[0].src="http://javascript.ru/forum/images/smilies/victory.gif";
img_a[1].src="http://javascript.ru/forum/images/smilies/dance3.gif";
img_a[2].src="http://javascript.ru/forum/images/smilies/agree.gif";
function img_b()   {
var n = i%3;
document.images[0].src=img_a[n].src;
document.images[0].parentNode.href=img_href[n];
document.images[0].parentNode.title=img_title[n];
i++;
setTimeout("img_b()", 4000);
}
window.onload=img_b
</script>
</head>
<body>
<a href="http://www.mail.ru" target="_blank" title="Mail"><img src="http://javascript.ru/forum/images/smilies/victory.gif"></a>
</body>
</html>

Рони, poorking огромное Вам спасибо! Всё работает :thanks:

Как говорится - истина была где-то рядом :D


P.S. Исчерпывающий ответ на вопрос получен. Тему можно закрывать.

Feex 09.02.2025 14:25

Рони, приветствую. В вашем скрипте есть проблема:
если на странице есть еще какие либо картинки, которые находятся выше картинки, которая задействована скриптом, то задействуется картинка, которая выше картинки из скрипта и она заменяется картинками из ротатора и ротируется, а оригинал перестает ротироваться. Вот пример:
Выше картинки из скрипта я установил картинку с флагом. Результат вы видите.
Как это исправить? Как сделать, чтобы любые другие картинки не подтягивались скриптом?
<!DOCTYPE html>
<html>
<head>
  <title></title>
<script language="JavaScript">
var img_href =['http://www.mail.ru','http://www.google.ru/','http://search.yahoo.com/'],
img_title = ['Mail','Google','Yahoo'],
i = 0,
img_a=new Array();
img_a[0]=new Image();
img_a[1]=new Image();
img_a[2]=new Image();
img_a[0].src="http://javascript.ru/forum/images/smilies/victory.gif";
img_a[1].src="http://javascript.ru/forum/images/smilies/dance3.gif";
img_a[2].src="http://javascript.ru/forum/images/smilies/agree.gif";
function img_b()   {
var n = i%3;
document.images[0].src=img_a[n].src;
document.images[0].parentNode.href=img_href[n];
document.images[0].parentNode.title=img_title[n];
i++;
setTimeout("img_b()", 4000);
}
window.onload=img_b
</script>
</head>
<body>
<!-- моя картинка -->
<img src="http://www.flags.net/images/smallflags/RUSS0001.GIF" alt=""/><br>
<!-- моя картинка -->

<a href="http://www.mail.ru" target="_blank" title="Mail"><img src="http://javascript.ru/forum/images/smilies/victory.gif"></a><br>

</body>
</html>

рони 09.02.2025 18:22

Feex,
придумать класс для картинки и заменить document.images[0] на document.querySelector('imgточкакласс')

Feex 09.02.2025 19:00

<!DOCTYPE html>
<html>
<head>
  <title></title>
<script language="JavaScript">
var img_href =['http://www.mail.ru','http://www.google.ru/','http://search.yahoo.com/'],
img_title = ['Mail','Google','Yahoo'],
i = 0,
img_a=new Array();
img_a[0]=new Image();
img_a[1]=new Image();
img_a[2]=new Image();
img_a[0].src="http://javascript.ru/forum/images/smilies/victory.gif";
img_a[1].src="http://javascript.ru/forum/images/smilies/dance3.gif";
img_a[2].src="http://javascript.ru/forum/images/smilies/agree.gif";
function img_b()   {
var n = i%3;
document.querySelector('img.rotator').src=img_a[n].src;
document.querySelector('img.rotator').parentNode.href=img_href[n];
document.querySelector('img.rotator').parentNode.title=img_title[n];
i++;
setTimeout("img_b()", 4000);
}
window.onload=img_b
</script>
</head>
<body>
<!-- моя картинка -->
<img src="http://www.flags.net/images/smallflags/RUSS0001.GIF" alt=""/><br>
<!-- моя картинка -->

<a href="http://www.mail.ru" target="_blank" title="Mail"><img class="rotator" src="http://javascript.ru/forum/images/smilies/victory.gif"></a><br>

</body>
</html>

вроде так, если я правильно понял. Моя картинка не задействуется теперь, но ротации смайлов нет.. Что я не так сделал?)
P.S. Сорри!! Моя опечатка))) Вместо "=" я "+" поставил тут: "img class+"rotator" "
В коде исправил уже - всё работает)) СПАСИБО!! Вы снова мне помогли))


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