2016-06-15 5 views
0

私は大学のウェブサイトプロジェクトをやっていて、ウェブサイトに3枚の写真を表示したいと思います。私のフォルダに格納されている10枚の写真(すべて「slika 1 to 10」という名前で、スクリプトには3つの変数があり、それらのすべてが1から10の間の数字をランダムに生成し、次に「slika」+ randomNumberというピクチャを表示します)Javascript:3つの変数がすべて違うかどうかを確認する方法は?

私はウェブサイトを更新するたびに、これら3つの写真は、常に異なっているように、3つのすべての変数が異なる場合はどうすれば確認できます

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

CKそれあなたがあなたの変数を生成した後:

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のソリューションを使用していましたが、今のところ働いています。 –

+0

はい、私は誤解しました。これは、変数が生成された後に実行されるので、完璧に機能します。 –

2

Lux's answerは完全に罰金ですが、リストが取得する場合は、(1)N長さおよび/または(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"; 
} 
関連する問題