Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Смена фона при перезагрузке страницы (https://javascript.ru/forum/dom-window/3298-smena-fona-pri-perezagruzke-stranicy.html)

Shokoladniu 05.04.2009 02:14

Смена фона при перезагрузке страницы
 
Задача: смена фонового изображения при перезагрузке страницы
Что уже имеется:
создал массив картинок
var Pic = new Array() 

Pic[0] = 'x1.png'
Pic[1] = 'x2.png'
Pic[2] = 'x3.png'
Pic[3] = 'x4.png'


и нарыл на форуме функцию, которая у боди меняет фоновую картинку

function changeBg(){
document.getElementsByTagName('body')[0].style.backgroundImage="url('1.jpg')"
}


Вопрос 1: как сделать,чтобы в функции была не одна картинка 1.jpg, а рэндомная картинка из массива.
Вопрос 2: как привязать это событие к перезагрузке страницы. Есть body onLoad и onUnload, а релоада то нету?

x-yuri 05.04.2009 03:54

1) Math.random
2) reload нету, а зачем делать резличие между загрузкой и повторной загрузкой страницы?

Shokoladniu 05.04.2009 12:19

Написал такой скрипт - но проблема в том, что math.random выводит значение в диапазоне 0-1, а мне надо в диапазоне целых значений от 1 до 20 (например). Вот мой скрипт
var img_name = ""
var img_suffix = "x"
var img_ext = ".gif";
var result = "";

img_name= Math.random();
result = img_suffix + img_name + img_ext

alert(result);


По второму вопросу - понял, что надо повесить событие body onLoad просто, я правильно понял?

x-yuri 05.04.2009 12:38

1) Math.round(Math.random()*20)
2) насколько я понял ответ: "для этого нету причин"

Shokoladniu 05.04.2009 12:51

Не могу понять, почему не работает - вроде все директории и файлы есть, путь правильный...
var img_name = ""
var img_dir = "images";
var img_suffix = "x"
var img_ext = ".png";
var result = "";

img_name= Math.round(Math.random()*20);
result = img_dir + "/" + img_suffix + img_name + img_ext

function changeBg(){
document.getElementsByTagName('body')[0].style.backgroundImage="url('result')"
}

x-yuri 05.04.2009 12:58

когда не можешь понять, надо отлаживать: alert или console.log (firebug)

Shokoladniu 05.04.2009 13:13

насколько я понял
в style.backgroundImage="url('...')" нельзя вставить result. А через что его тогда пихать? innerhtml?

x-yuri 05.04.2009 13:52

а чего ты так решил?

Shokoladniu 05.04.2009 13:54

потому что result становится не функцией, а простым именем файла "result" которого естественно нет.
Не подскажете в какую сторону копать?

x-yuri 05.04.2009 13:58

если ты путь "слепить" смог
result = img_dir + "/" + img_suffix + img_name + img_ext

то что мешает к нему "долепить" url(...)?

p.s.
var a = 1;
alert('a');

что по-твоему должно вывести?

Shokoladniu 05.04.2009 14:09

ничего не мешает.
result = "background url" + "(" + "'"+"/" + img_dir + "/" + img_suffix + img_name + img_ext + "'" + ")"


Но я не знаю как это выражение использовать, чтобы менялся фон. Это же не функция, оно ничего не делает.
P.S. выведет а

x-yuri 05.04.2009 14:14

1) назначь тогда фон с помощью атрибута style
2) с помощью javascript посмотри, что должно быть в backgroundImage
3) исправь свой скрипт

Shokoladniu 05.04.2009 14:50

Заработало. Вот результат:
var img_name = ""
var img_dir = "images";
var img_suffix = "x"
var img_ext = ".png";


img_name= Math.round(Math.random()*20);


function changeBg(){
document.getElementsByTagName('body')[0].style.backgroundImage="url('./" + img_dir + "/" + img_suffix + img_name + img_ext + "'" + ")";
}

x-yuri 05.04.2009 14:54

надеюсь, ты понял, почему не работало и почему сейчас работает
p.s. непонятно, почему бы все в функцию не засунуть

Shokoladniu 05.04.2009 15:01

Да, разобрался. В функцию - засунул. Спасибо:)

karr1gan 31.07.2014 15:42

это надо в css поставит А ?

1
var Pic = new Array()
2
 
3
Pic[0] = 'x1.png'
4
Pic[1] = 'x2.png'
5
Pic[2] = 'x3.png'
6
Pic[3] = 'x4.png'

Rise 31.07.2014 16:16

karr1gan,
<body>
<script>
    document.getElementsByTagName('body')[0].style.background = 'url(/images/' + Math.round(Math.random()*4) + '.jpg)';
</script>
<!-- В папке 'images' должны быть 0.jpg, 1.jpg, 2.jpg, 3.jpg, 4.jpg -->
</body>

karr1gan 01.08.2014 10:09

Rise
это в css надо поставить или в html ?

<body>
2
<script>
3
    document.getElementsByTagName('body')[0].style.background = 'url(/images/' + Math.round(Math.random()*4) + '.jpg)';
4
</script>
5
<!-- В папке 'images' должны быть 0.jpg, 1.jpg, 2.jpg, 3.jpg, 4.jpg -->
6
</body>

karr1gan 01.08.2014 10:20

пожалуйста пишите это Смена фона при перезагрузке страницы с инструкция примерно так в Css ставте это в html это т.д кароче Спасибо заранее!


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