Javascript.RU

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

Помогите с рэндомом
Весь форум излазил уже, что только не делал, не могу допетрить и всё. Суть: в таблице 10 картинок при наведении на одну из них, она должна заменяться на другую, но не в коем случае не повторяться.
Картинки берутся из папки.
Проблема: при неоднократном наведении пропадают картинки и иногда появляются 2-3 одинаковых.

Вот скрипт:
var arrDocImg = 1; //сколько картинок в документе
var arrNum = 10; //указываешь кол-во картинок
var imgLoc = 'img/';
var imgType = '.jpg';

var docImages = new Array;
for (i=1; i<=arrDocImg; i++) {
  docImages[i] = i;
}

var images = new Array;
for (i=1; i<=arrNum; i++) {
  images[i] = new Image();
  images[i].src = imgLoc + i + imgType;
}

function getrandom(a) {
  var min_random = 1;
  var max_random = a;
  max_random++;
  var range = max_random - min_random;
  var n=Math.floor(Math.random()*range) + min_random;
  return n;
}

function getuniquerandom(iNum) {
  var nextImg = getrandom(iNum);
  for (j=1; j<=arrDocImg; j++) {
    if ( nextImg == docImages[j]) {
      if ( (nextImg + 1 <= arrNum) ) {
        iNum = nextImg + 1;
      } else {
        if ( (nextImg - 1 >= 1) ) {
          iNum = nextImg - 1;
        }
      }
      nextImg = getuniquerandom(iNum);
    }
  }
  return nextImg;
}
function swapPicGrin(toSwap, swapId) {
  var imgFlag = true;
  var iNum = images.length - 1;
  var imgToSwap = document.getElementById(toSwap);
  var nextImgNow = getuniquerandom(iNum);
  docImages[swapId] = nextImgNow;
  imgToSwap.src = images[nextImgNow].src;
}



А вот то что я вставляю в тело html страницы
<img src="img/1.jpg" id="randimg1" class="swappedImg" onMouseOver="swapPicGrin('randimg1',1);" />
...
...
...
<img src="img/10.jpg" id="randimg10" class="swappedImg" onMouseOver="swapPicGrin('randimg10',10);" />
Ответить с цитированием
  #2 (permalink)  
Старый 11.12.2008, 21:33
Интересующийся
Отправить личное сообщение для PavelPetrov Посмотреть профиль Найти все сообщения от PavelPetrov
 
Регистрация: 06.12.2008
Сообщений: 20

Для вашей задачи (есля я правильно понимаю) arrDocImg должна равнятся 10-и
var arrDocImg = 10;

Количество емеющихся файлов изображений должно быть больше изображенных.(11.jpg,12.jpg...)arrNum должна быть больше arrDocImg.
Тогда function getuniquerandom() должна иметь следующий код:
function getuniquerandom(iNum) {
  var nextImg = getrandom(iNum);
  for (j=1; j<=arrDocImg; j++) {
    if ( nextImg == docImages[j]) {
      nextImg = getrandom(iNum); 
      j=0;  
    }
  }
  return nextImg;
}


И для отладки, а главное чтобы function getuniquerandom() не зацыклилась в начало function swapPicGrin() рекомендую включить проверку:
function swapPicGrin(toSwap, swapId) {
  if (arrDocImg>=arrNum) {alert("недостаточно изображений\nдля замены:\narrDocImg>=arrNum");return false;};
................................................................
}

Вот тогда все работает

Последний раз редактировалось PavelPetrov, 11.12.2008 в 21:42.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 10:05
Помогите разобрать скрипт! Forgott Общие вопросы Javascript 14 22.02.2009 20:51
Помогите или подскажите где искать. designovermatter Общие вопросы Javascript 2 09.10.2008 18:12
Помогите динамически интегрировать значение в URL Yurii Общие вопросы Javascript 14 07.05.2008 15:12
Помогите разобраться с проблемой SergeiAzarov (X)HTML/CSS 0 28.03.2008 18:51