2016-06-15 2 views
0

Я делаю проект веб-сайта для колледжа, и я хочу отобразить три фотографии на веб-сайте. В моей папке хранится 10 фотографий (все они называются «slika 1 to 10», а сценарий имеет три переменные, каждый из которых произвольно генерирует число от 1 до 10, а затем показывает изображение «slika» + randomNumber.Javascript: как проверить, отличаются ли все три переменные?

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

JS код:.

window.onload=odaberiSliku; 

var broj1=Math.floor(Math.random() * 10) +1; 
var broj2=Math.floor(Math.random() * 10) +1; 
var broj3=Math.floor(Math.random() * 10) +1; 

    function odaberiSliku() { 
     document.getElementById("slika1").src = "slike/randomslike/slika"+broj1+".jpg"; 
     document.getElementById("slika2").src = "slike/randomslike/slika"+broj2+".jpg"; 
     document.getElementById("slika3").src = "slike/randomslike/slika"+broj3+".jpg"; 
    } 

в случае, если кто задается вопросом, имена переменных в хорватском.

+1

насчет создания массива из 1-10, а затем шарканье его случайно? – Terry

ответ

1

Ну просто че ск это после того, как вы создали переменные:

while(broj2 == broj1) { 
    broj2=Math.floor(Math.random() * 10) +1;) 
} 

while(broj3 == broj2 || broj3 == broj1) { 
    broj3=Math.floor(Math.random() * 10) +1;) 
} 
+0

Удивительный, спасибо! –

+0

Это странно ... Я использовал решение Lux, и он работает на данный момент. Я просто добавил эти два цикла while, задав все три переменные. –

+0

Да, я неправильно понял. Это отлично работает, поскольку он запускается после генерирования переменных. –

2

Хотя Lux's answer это прекрасно, это не является масштабируемым, если вы (1) генерируют динамический список п длины и/или (2), если список получает действительно большой.

Существует более простой способ достичь того, что вы намереваетесь сделать. Вы в основном пытаетесь генерировать случайные числа, которые уникальны - это сродни генерации уникального массива инкрементных чисел и перетасовке их.

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

Все, что вам нужно, это:

  1. generate a simple array, скажем, от 1-10 (верхний предел должен соответствовать количеству изображений у вас есть),
  2. shuffle it,
  3. принимать первые 3 элементы в массиве перетасовало
  4. перебирать нарезанный массив
  5. сцепить каждый номер в шаблон URL
  6. назначить его на элемент выбора

Доказательство правильности концепции код выглядит следующим образом:

var imageCount = 10, 
    arr = new Array(imageCount).join().split(',').map(function(item, index) { 
     return ++index; 
    }), 
    shuffle = function(a) { 
     var j, x, i; 
     for (i = a.length; i; i -= 1) { 
      j = Math.floor(Math.random() * i); 
      x = a[i - 1]; 
      a[i - 1] = a[j]; 
      a[j] = x; 
     } 
    }; 

// Shuffle the array 
shuffle(arr); 

// Get first 3 elements 
var sliced = arr.slice(0, 3); 

// Iterate through first 3 elements, and assign image source 
for (var i = 0; i < sliced.length; i++) { 
    document.getElementById("slika" + i).src = "slike/randomslike/slika" + sliced[i] + ".jpg"; 
} 
Смежные вопросы