Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   случайная смена фона сайта на jquery (https://javascript.ru/forum/jquery/11429-sluchajjnaya-smena-fona-sajjta-na-jquery.html)

Netherlandman 23.08.2010 15:31

случайная смена фона сайта на jquery
 
Всем доброго времени суток.
На одном из моих сайтов возникла необходимость случайной смены фона.
То есть к примеру зашел я на одну из страниц сайта фон один, перешел на другую сменился на другой.
Фоновое изображение и цвет фона задается для тега body. Изображения находятся в отдельной папке images и всего их[изображений] три, но каждому из них нужен свой цвет фона.
Решил реализовать это на jQuery, так как судя по всему этот фреймворк более менее доступный. Но отсутствие опыта в скриптинге конечно сказывается, застрял на том как задать случайные переменные.
Вот то, что имею на данный момент (мой кривой код)
$(document).ready(function() {
		var a=Math.random() * 3;
		if(a=1)
		$('body') .css('background','#91BD5B url(images/bg2.jpg) no-repeat center top');
		if(a=2)
		$('body') .css('background','#0A1229 url(images/bg3.jpg) no-repeat center top');
		if(a=3)
		$('body') .css('background','#213051 url(images/bg1.jpg) no-repeat center top');
	});

наверняка и переменные задал не правильно и реализовать все можно проще, поэтому прошу помощи у вас.
Буду очень признателен за пояснения!

Sweet 23.08.2010 15:53

Цитата:

Сообщение от Netherlandman
судя по всему этот фреймворк более менее доступный

Одно мартини, и jQuery готова на все?
Если это все, что есть на js на странице, то есть ли смысл подключать целый фреймворк? На чистом js это будет 5 строк.
Цитата:

Сообщение от Netherlandman
var a=Math.random() * 3;

Это даст неравномерное распределение вероятностей

Gvozd 23.08.2010 16:11

используйте оператор сравнения, вместо оператора присваивания

к тому же случайной число следует округлять

Sweet 23.08.2010 16:15

<body><script>
var bg = ['#FF0', '#F0F', '#0FF'], n
while(n == undefined){
  n = Math.round(Math.random()*4)
  if(n==0||n==4) n = undefined
}
document.body.style.background = bg[--n]
</script></body>

И нечего джейКверить моцк:)

Netherlandman 23.08.2010 17:31

спасибо большое за оперативность.
jQuery был выбран потому что уже используется на странице, а так же потому, что после года веб-дизайнинга очень хочется освоить азы скриптов, а jquery часто рекомендуют для новичков.
понимаю, что для полного понимания надо изучать непосредственно java, но для меня сейчас это непосильная задача, поскольку еще и в дизайне надо много чего осваивать, а jquery до этого примера выручал (правда я в основном переделываю чужие скрипты, а свои если и пытаюсь писать то на примитивном уровне).
попробую реализовать на java, но если вам будет не трудно, то подскажите как можно это реализовать при помощи jquery

Netherlandman 23.08.2010 17:48

кое-что получилось
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
	$(document).ready(function() {
		var a=Math.round(Math.random() * 3);
		if(a==2)
		$('body') .css('background','#91BD5B url(images/bg2.jpg) no-repeat center top');
		if(a==1)
		$('body') .css('background','#0A1229 url(images/bg3.jpg) no-repeat center top');
		if(a==3)
		$('body') .css('background','#213051 url(images/bg1.jpg) no-repeat center top');
	});
</script>

вроде как все работает.

правда заметил какую-то хрень с моим "любимым IE" на сайте. если кому не трудно можете посмотреть, через все браузеры все ок, кроме IE - иногда пропадает сайдбар, в котором тоже есть один скриптик (в меню). странно что пропадает весь сайдбар...

subzey 24.08.2010 20:09

Вложений: 1
У Вас получается очень неравномерное распределение, да еще и с «белыми пятнами». См. картинку.

Kolyaj 24.08.2010 22:17

Цитата:

Сообщение от subzey
У Вас получается очень неравномерное распределение, да еще и с «белыми пятнами».

А не пофиг ли? Тут вроде тупо фон меняют.

Netherlandman 25.08.2010 03:11

да в принципе большого значения это не имеет, но если можете подсказать как сделать более равномерно, то исправлю. ну или сам может дойду до этого рано или поздно )


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