31. Mazej - 13 Апреля, 2005 - 11:50:31 - перейти к сообщению
А как сделать чтобы вышеприведенный код не показывал баннеры уже который были показаны до перезагрузки страницы?
32. TvoyWeb - 13 Апреля, 2005 - 17:27:56 - перейти к сообщению
Mazej
Их надо как то помечать. Может использовать для этого куки. По другому ИМХО на JS никак.
Их надо как то помечать. Может использовать для этого куки. По другому ИМХО на JS никак.
33. Mazej - 14 Апреля, 2005 - 06:08:00 - перейти к сообщению
А как будет выглядеть?, если использовать куки?
34. TvoyWeb - 14 Апреля, 2005 - 09:49:47 - перейти к сообщению
Mazej
Я не очень в JS.... Проси ETC'a или жди Леголекса.
Я не очень в JS.... Проси ETC'a или жди Леголекса.
35. Леголегс - 15 Апреля, 2005 - 13:07:05 - перейти к сообщению
CODE:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript" language="javascript">
<!--
function setCookie(name, value, shortcook) {
var expdate = new Date();
expdate.setTime(expdate.getTime() + (86400000 * 31));
var curCookie=name+"="+escape(value)+((shortcook)?"":";expires="+expdate.toGMTString());
document.cookie=curCookie;
}
function getCookie(name, defval) {
var prefix = name + "=";
var cookieStartIndex = document.cookie.indexOf(prefix);
if (cookieStartIndex == -1) {
return defval;
}
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
if (cookieEndIndex == -1) {
cookieEndIndex = document.cookie.length;
}
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
//========Основная рабочая функция, в правке не нуждается
function rotate(imgId, fNameMask, counter, min, max, interval)
{
if (counter > max) counter = min; //этакий цикл
var s = fNameMask.replace("%n%",counter);//ставим число вместо %n%
document.getElementById(imgId).src = s;
counter++;
setCookie('banner'+imgId,counter,0);
//рекурсия с задержкой
setTimeout("rotate('" + imgId + "','" + fNameMask + "'," + counter + "," + min + "," + max + "," + interval + ")", interval);
}
//========Инициирующая функция
function startrotate(imgid,fname,min,max,interval)
{
setTimeout('rotate("'+imgid+'","'+fname+'",'+getCookie("banner"+imgid,min)+','+min+','+max+','+interval+');',10);
}
//=======Настройка
function rotateinit()
{
/*В маске_имени '%n%' будет заменено на номер.
стартовый_No и конечный_No - это пределы изменения номера баннера
интервал - в миллисекундах*/
//Параметры: ID_имаги, маска_имени, стартовый_No, конечный_No, интервал
startrotate("bannerimg1","%n%.bmp",1,4,1000);
startrotate("bannerimg2","%n%.bmp",1,4,1600);
}
//-->
</script>
</head><body onload="rotateinit();">
<img id="bannerimg1" src="1.bmp">
<img id="bannerimg2" src="2.bmp">
</body></html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script type="text/javascript" language="javascript">
<!--
function setCookie(name, value, shortcook) {
var expdate = new Date();
expdate.setTime(expdate.getTime() + (86400000 * 31));
var curCookie=name+"="+escape(value)+((shortcook)?"":";expires="+expdate.toGMTString());
document.cookie=curCookie;
}
function getCookie(name, defval) {
var prefix = name + "=";
var cookieStartIndex = document.cookie.indexOf(prefix);
if (cookieStartIndex == -1) {
return defval;
}
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
if (cookieEndIndex == -1) {
cookieEndIndex = document.cookie.length;
}
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
//========Основная рабочая функция, в правке не нуждается
function rotate(imgId, fNameMask, counter, min, max, interval)
{
if (counter > max) counter = min; //этакий цикл
var s = fNameMask.replace("%n%",counter);//ставим число вместо %n%
document.getElementById(imgId).src = s;
counter++;
setCookie('banner'+imgId,counter,0);
//рекурсия с задержкой
setTimeout("rotate('" + imgId + "','" + fNameMask + "'," + counter + "," + min + "," + max + "," + interval + ")", interval);
}
//========Инициирующая функция
function startrotate(imgid,fname,min,max,interval)
{
setTimeout('rotate("'+imgid+'","'+fname+'",'+getCookie("banner"+imgid,min)+','+min+','+max+','+interval+');',10);
}
//=======Настройка
function rotateinit()
{
/*В маске_имени '%n%' будет заменено на номер.
стартовый_No и конечный_No - это пределы изменения номера баннера
интервал - в миллисекундах*/
//Параметры: ID_имаги, маска_имени, стартовый_No, конечный_No, интервал
startrotate("bannerimg1","%n%.bmp",1,4,1000);
startrotate("bannerimg2","%n%.bmp",1,4,1600);
}
//-->
</script>
</head><body onload="rotateinit();">
<img id="bannerimg1" src="1.bmp">
<img id="bannerimg2" src="2.bmp">
</body></html>
36. Mazej - 16 Апреля, 2005 - 07:11:00 - перейти к сообщению
Спасибо Леголегс, но куда его вставлять?
37. Леголегс - 18 Апреля, 2005 - 14:38:44 - перейти к сообщению
Ну, тут я привёл не скрипт, а пример. Тебе надо всё, что между
На всех страницах, где будет баннер(ы) нужно где-то внутри
CODE:
сохранить в файл с именем, например, rotate.js<script type="text/javascript" language="javascript">
<!--
и
//-->
</script>
<!--
и
//-->
</script>
На всех страницах, где будет баннер(ы) нужно где-то внутри
CODE:
вставить <head>...</head>
CODE:
. Затем так как в примере написать <script src="rotate.js" type="text/javascript" language="javascript"></script>
CODE:
и наконец в нужном месте страницы вставить баннер типа <body ...возможно, что-то ещё... onload="rotateinit();">
CODE:
Баннеров может быть несколько, для каждого в файле rotate.js после строки "//Параметры: ID_имаги, маска_имени, стартовый_No, конечный_No, интервал" должно быть по образцу указано, как его крутить.
<img id="bannerimg1" src="1.bmp">
38. M0NG0L - 31 Марта, 2010 - 09:16:04 - перейти к сообщению
Прошу прощения, даже не знаю, ответит кто нибудь или нет, много времени прошло, но Ваш скрипт хорошо работает. Есть вопрос. Хочу сделать на сайте сменную шапку, но она состоит из двух картинок (верхней и нижней части), которые должны одновременно сменяться на другие две и так 6 раз 6 разных шапок по 2 картинки. Ваш скрипт с одной картинкой работает замечательно, но как сделать с двумя частями? Заранее благодарю Вас за ответ.
39. Леголегс - 12 Апреля, 2010 - 06:11:49 - перейти к сообщению
M0NG0L, что-то такое получается:
rotate.js:
пример.html:
<script> очень желательно втыкать после всех картинок, тогда он сможет начать загрузку до полной загрузки всей страницы. Если к шапке захочешь добавить третью картинку - просто добавь строчку с id картинки и списком картинок в секции настроек.
rotate.js:
/* настройки */
var rotate_set = {
"id_img_above": [ "picture_above_1.jpg", "picture_above_2.jpg", "picture_above_3.jpg", "picture_above_4.jpg", ],
"id_img_below": [ "picture_below_1.jpg", "picture_below_2.jpg", "picture_below_3.jpg", "picture_below_4.jpg", ],
};
var rotate_interval = 10000; //миллисекунд
/* /настройки */
function setCookie(name, value, shortcook) {
var expdate = new Date();
expdate.setTime(expdate.getTime() + (86400000 * 31));
var curCookie=name+"="+escape(value)+((shortcook)?"":";expires="+expdate.toGMTString());
document.cookie=curCookie;
}
function getCookie(name, defval) {
var prefix = name + "=";
var cookieStartIndex = document.cookie.indexOf(prefix);
if (cookieStartIndex == -1) {
return defval;
}
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length);
if (cookieEndIndex == -1) {
cookieEndIndex = document.cookie.length;
}
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex));
}
var rotate_index;
function rotate_do()
{
var id;
for (id in rotate_set)
{
document.getElementById(id).lowsrc = document.getElementById(id).src;
document.getElementById(id).src = rotate_set[id][rotate_index];
}
rotate_index++;
if (rotate_set[id].length == rotate_index)
rotate_index = 0;
setCookie("banner",rotate_index,0);
}
function rotate_start()
{
rotate_do();
setInterval(rotate_do,rotate_interval);
}
function rotate_init()
{
rotate_index=getCookie("banner",0);
var ready=true;
for (var id in rotate_set)
ready = ready && document.getElementById(id);
if (ready)
rotate_start();
else
document.addEventListener("load",rotate_start, false);
}
rotate_init();
пример.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head><body>
<img id="id_img_above" src="">
<img id="id_img_below" src="">
<script type="text/javascript" src="rotater.js"></script>
</body></html>
<script> очень желательно втыкать после всех картинок, тогда он сможет начать загрузку до полной загрузки всей страницы. Если к шапке захочешь добавить третью картинку - просто добавь строчку с id картинки и списком картинок в секции настроек.
40. M0NG0L - 17 Апреля, 2010 - 05:10:50 - перейти к сообщению
Спасибо Вам большое, обязательно буду пробовать. Потом отпишусь.