Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Изменение шапки сайта каждый день (https://javascript.ru/forum/events/25638-izmenenie-shapki-sajjta-kazhdyjj-den.html)

Tatyanko_O 11.02.2012 13:55

Изменение шапки сайта каждый день
 
Добрый день!
Очень нуждаюсь в вашем совете!
Задача довольно простая: каждый день с 15 по 18 число менять изображение на backgrounde. К сожалению, мой уровень подготовки не позволил реализовать это сразу и без ошибок:cray:
Вот моя последовательность действий.
Создала файл myscript.js, содержащий следующее:
window.onload = function() { chg_bg() }
function chg_bg()
{
	var mydate=new Date()
	var today=mydate.getDate()
	if (today==15) 
	{
	  document.getElementById('header').style.backgroundImage = 'url(images/shapka/15feb.jpg)';
	}
	if (today==16) 
	{
	  document.getElementById('header').style.backgroundImage = 'url(images/shapka/16feb.jpg)';
	}
	if (today==17) 
	{
	  document.getElementById('header').style.backgroundImage = 'url(images/shapka/18feb.jpg)';
	}
	if (today==18) 
	{
	  document.getElementById('header').style.backgroundImage = 'url(images/shapka/18feb.jpg)';
	}
}

В div id="header" указан, в css файле параметры для него указаны.
Теперь вызываю этот скрипт:
<head>
...
<script src="/myscript.js" type="text/javascript"></script>
</head>

В общем, представляю, что скорее всего где-то совершаю чудовищную ошибку, поэтому заранее прошу о вашем снисхождении...

Elergy 11.02.2012 20:55

да нет, код должен быть рабочий вполне, проверь внимательней существование header, мб синтаксическая ошибка. Хэдер это что, див же? У меня этот скрипт див разукрасил.

Проверь, до какого места доходит выполнение скрипта, происходит ли вообще вход в chg_bg и в нужный тебе кейз, существуют ли файлы этой шапки, не лежит ли html там, откуда images/shapka/18feb.jpg не ведет к файлу. Ну и в css не стоит ли где important у текущего backgroundImage

Tatyanko_O 11.02.2012 22:19

С вашего разрешения опишу всю картину. В <head> вставила следующий код:
<head>
...
<script type="text/javascript">
function chg_bg()
{
 var mydate=new Date()
 var today=mydate.getDate()
 if (today==15)
 {
   document.getElementById('header').style.backgroundImage = 'url(images/shapka/15feb.jpg)';
  }
 if (today==16)
 {
   document.getElementById('header').style.backgroundImage = 'url(images/shapka/16feb.jpg)';
 }
 if (today==17)
 {
  document.getElementById('header').style.backgroundImage = 'url(images/shapka/18feb.jpg)';
  }
 if (today==18)
 {
  document.getElementById('header').style.backgroundImage = 'url(images/shapka/18feb.jpg)';
  }
}
</script>
</head>


Но когда ниже вызываю функцию:
<body onload="chg_bg()">

шапка или исчезает вообще, ну или статична, не обновляется (по дефолту background прописан для #header в cssке).
Пути проверила, этих картинок накопировала почти во все папки, чтобы проверить... Не выходит :cray:

Denizz 11.02.2012 23:33

Привет, я немного "упростила " твой код, столько ifов лучше не использовать.Короче, попробуй так :
<html>
<head>
<script type="text/javascript">
function chg_bg()
{
var mydate=new Date();
var today=mydate.getDate();
var a=document.getElementById('header');//отдельная переменная а быстрее вычисляется//
for (i=15;i<19;i++)
if (i==today) {
a.style.backgroundImage='url(images/image'+i+'.jpg)';
}}
</script>
</head>
<body onload="chg_bg()";>
<div id="header" width="100%">
<style>
#header {
background: url(images/image1.jpg) no-repeat;
width: 996px;
height: 230px;
}
</style>
</div>
</body>
</html>

Стиль, примерный, естественно...Замени своим

Denizz 11.02.2012 23:37

Извини, забыла свои image на твои febы поменять, задаю твои рисунки: a.style.backgroundImage='url(images/shapka/'+i+'feb.jpg)';

Elergy 12.02.2012 03:35

ну я надеюсь ты там числа поменяла на 11, 12, а то нынче же не 15е) так вообще код рабочий вполне, проверяй докуда скрипт доходит (алертами хотя бы теми же)

nerv_ 12.02.2012 20:14

Цитата:

Сообщение от Tatyanko_O
каждый день с 15 по 18 число

Не бывает каждый день 15-18 числа.
window.onload = function() {
	var x = document.getElementById('header').style;
	switch(new Date().getHours()) {
		case 15: return x.backgroundImage = 'path';
		case 16: return x.backgroundImage = 'path';
		case 17: return x.backgroundImage = 'path';
		case 18: return x.backgroundImage = 'path';
	}
}

Tatyanko_O 13.02.2012 10:56

Цитата:

Сообщение от Elergy
ну я надеюсь ты там числа поменяла на 11, 12, а то нынче же не 15е)

Да, это конечно) Пока выкрутилась следующим образом: в css создала headerу дополнительные классы, и изменяю следующим образом:
if (today==13)
{document.getElementById('header').className+='class1';}

Понимаю, что это наверное "как микроскопом гвозди забивать", но на данное время действует. Denizz, спасибо, буду совершенствовать и совершенствоваться :)
Цитата:

Сообщение от nerv_
Не бывает каждый день 15-18 числа.

Привязка именно к числу, все верно)) Т.е. например 15 февраля одна картинка, 16 - другая и т.п. (У меня в шапке отсчет дней до мероприятия)


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