Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2009, 14:36
Интересующийся
Отправить личное сообщение для 4ildren Посмотреть профиль Найти все сообщения от 4ildren
 
Регистрация: 28.10.2009
Сообщений: 18

Рандомный id div'a
Здравствуйте.
Подскажите, пожалуйста, такую штуку.
У меня менюшка генерится админкой автоматически.
Мне необходимо, чтобы каждому пункту меню соответствовал свой id - рандомно. Таким образом я смогу применить к каждому из возможных id по бэкграунду через CSS, и каждая строка меню будет каждый раз со своим фоном.

Скрипт с рандомным бэкграундом уже видел и пробовал.
Загвоздка в том, что когда загружается страница всем пунктам меню присваивается одинаковый фон из возможных пяти. При обновлении это уже другой фон, но у всех всё равно одинаковый.

Спасибо за помощь.

P.S. java пока для меня тёмный лес и я совсем в ней чайник *смущённый смаел*
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2009, 15:06
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от 4ildren
Скрипт с рандомным бэкграундом уже видел и пробовал.
Загвоздка в том, что когда загружается страница всем пунктам меню присваивается одинаковый фон из возможных пяти. При обновлении это уже другой фон, но у всех всё равно одинаковый.
Как мы должны угадать, что вы делаете и почему у вас получается одинаковый фон, не видя кода?

Сообщение от 4ildren
java пока для меня тёмный лес
Java ≠ JavaScript
Ответить с цитированием
  #3 (permalink)  
Старый 28.10.2009, 15:18
Аспирант
Отправить личное сообщение для arma Посмотреть профиль Найти все сообщения от arma
 
Регистрация: 18.10.2009
Сообщений: 50

Я бы сделал так, перебрал все менюшки и присваивал бы им случайные цвета
ПР.
for (x=0; до количества менюшек)
{
 r=Math.round(Math.random()*255);
 g=Math.round(Math.random()*255);
 b=Math.round(Math.random()*255);
 menu[x].style.backgroundColor=dec2hex(r,g,b);
}

Если не надо случайные цвета, а надо цвета которые в ccs прописаны для id, - тож самое:
var a=array(Масив id)
for (x=0; до количества менюшек)
{

 menu[x].id=a[Math.round(Math.random()*на количество id)];
}


ЗЫ: Хотя я не уверен, что правильно понял вопрос
Ответить с цитированием
  #4 (permalink)  
Старый 28.10.2009, 15:33
Аватар для B~Vladi
Модератор Всея Форума
Отправить личное сообщение для B~Vladi Посмотреть профиль Найти все сообщения от B~Vladi
 
Регистрация: 14.05.2009
Сообщений: 4,021

Присваивание рандомных ID куче элементов не есть хорошо. Ищи другие пути решения.
Ответить с цитированием
  #5 (permalink)  
Старый 28.10.2009, 18:36
Интересующийся
Отправить личное сообщение для 4ildren Посмотреть профиль Найти все сообщения от 4ildren
 
Регистрация: 28.10.2009
Сообщений: 18

Ремарка. Под Бэкграундом я имел в виду не цвет, а картинку (сорри, не уточнил).

Октан, код я не предоставил, потому что понял, что он не подходит. Моя просьба не в том, чтобы исправили код, а чтобы подсказали другой. Тот код не подходит принципиально и я понимаю причины.

Но, для наглядности представлю все исходные.

Сейчас после каждого обновления выглядит так:




А хочется так:




Коды.
Админка - MODx
Вызов Wayfinder'a
[!Wayfinder? &rowTpl=`row`!]


Чанк "row" (образец, использующийся админкой для построения каждого пункта меню)
<div class="stickerss" style="width: 570px; height: 478px; background-repeat: no-repeat; background-image: url(assets/images/bgs/rotate.php); float: left;">
<a href="[+wf.link+]" title="[+wf.title+]" [+wf.attributes+]>[+wf.linktext+]</a>
</div>


Код rotate.php (который действует на момент валидации чанка и, таким образом, ставит одинаковую картинку ко всем элементам меню)
<?php
/*
By Matt Mullenweg > http://photomatt.net
Inspired by Dan Benjamin > http://hiveware.com/imagerotator.php
Latest version always at:

http://photomatt.net/scripts/randomimage

*/// Make this the relative path to the images, like "../img" or "random/images/".
// If the images are in the same directory, leave it blank.
$folder = '';

// Space seperated list of extensions, you probably won't have to change this.
$exts = 'jpg jpeg png gif';

$files = array(); $i = -1; // Initialize some variables
if ('' == $folder) $folder = './';

$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) { // for each extension check the extension
if (preg_match('/\.'.$ext.'$/i', $file, $test)) { // faster than ereg, case insensitive
$files[] = $file; // it's good
++$i;
}
}
}
closedir($handle); // We're not using it anymore
mt_srand((double)microtime()*1000000); // seed for PHP < 4.2
$rand = mt_rand(0, $i); // $i was incremented as we went along

header('Location: '.$folder.$files[$rand]); // Voila!
?>
Ответить с цитированием
  #6 (permalink)  
Старый 28.10.2009, 21:55
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Эмм многа букаф, лень разбираться. Я бы сделал как-то так:
<style type="text/css">
	.sticker {
		width: 90px;
		height: 71px;
		margin: 20px;
		background: url(http://s39.radikal.ru/i083/0910/95/79560b0f4d75.jpg) no-repeat;
	}
	.type-0 {
	}
	.type-1 {
		background-position: top center;
	}
	.type-2 {
		background-position: top right;
	}
</style>
<div class="sticker">JavaScript</div>
<div class="sticker">JScript</div>
<div class="sticker">ActionScript</div>
<div class="sticker">Python</div>
<div class="sticker">Ruby</div>
<div class="sticker">C#</div>
<script>
	var stickers = document.getElementsByTagName("div"), i = stickers.length;
	while (i--) {
		if((" " + stickers[i].className + " ").indexOf(" sticker ") != -1) {
			stickers[i].className += " type-" + Math.floor(Math.random() * 3);
		}
	}
</script>
Ответить с цитированием
  #7 (permalink)  
Старый 29.10.2009, 11:55
Интересующийся
Отправить личное сообщение для 4ildren Посмотреть профиль Найти все сообщения от 4ildren
 
Регистрация: 28.10.2009
Сообщений: 18

Октан, СПАСИБО огромное!
Всё получилось! )))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция для увеличения div'a и текста в нём gez Общие вопросы Javascript 4 16.10.2009 09:31