Смена фона при перезагрузке страницы
Задача: смена фонового изображения при перезагрузке страницы
Что уже имеется: создал массив картинок 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, а релоада то нету? |
1) Math.random
2) reload нету, а зачем делать резличие между загрузкой и повторной загрузкой страницы? |
Написал такой скрипт - но проблема в том, что 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 просто, я правильно понял? |
1) Math.round(Math.random()*20)
2) насколько я понял ответ: "для этого нету причин" |
Не могу понять, почему не работает - вроде все директории и файлы есть, путь правильный...
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')" } |
когда не можешь понять, надо отлаживать: alert или console.log (firebug)
|
насколько я понял
в style.backgroundImage="url('...')" нельзя вставить result. А через что его тогда пихать? innerhtml? |
а чего ты так решил?
|
потому что result становится не функцией, а простым именем файла "result" которого естественно нет.
Не подскажете в какую сторону копать? |
если ты путь "слепить" смог
result = img_dir + "/" + img_suffix + img_name + img_ext то что мешает к нему "долепить" url(...)? p.s. var a = 1; alert('a'); что по-твоему должно вывести? |
ничего не мешает.
result = "background url" + "(" + "'"+"/" + img_dir + "/" + img_suffix + img_name + img_ext + "'" + ")" Но я не знаю как это выражение использовать, чтобы менялся фон. Это же не функция, оно ничего не делает. P.S. выведет а |
1) назначь тогда фон с помощью атрибута style
2) с помощью javascript посмотри, что должно быть в backgroundImage 3) исправь свой скрипт |
Заработало. Вот результат:
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 + "'" + ")"; } |
надеюсь, ты понял, почему не работало и почему сейчас работает
p.s. непонятно, почему бы все в функцию не засунуть |
Да, разобрался. В функцию - засунул. Спасибо:)
|
это надо в 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' |
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> |
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> |
пожалуйста пишите это Смена фона при перезагрузке страницы с инструкция примерно так в Css ставте это в html это т.д кароче Спасибо заранее!
|
Часовой пояс GMT +3, время: 11:00. |