2011-08-12 16 views
1

私はこの記事にタイトルを付ける方法はわかりませんが、私は助けが必要な少し論理的な問題があります。だから、私は4つのボックスが必要なウェブサイトのフロントページに。これらの4つのボックスには、1つのイメージ、1つのタイトル、1つの日付が含まれます。トリックは、これらの4つのボックスは10のリストから無作為に生成する必要があります。したがって、javascriptでは、xml構造体のようなものを作成して、そこから4つのランダムを選ぶことができます。 ...JavaScriptの配列と情報の取得

  • 項1
    • タイトル
    • SRC
  • 項2
    • タイトル
    • SRC
  • 項3
    • タイトル
    • SRC

は、配列内のアイテムを入れるために、それは可能ですその後acc彼らが無作為に選ばれた後の彼らの特性?私はPHP/MySQLでこれを行うことができますが、これは非常に不必要です。何か案は?ありがとう!

+1

で事前に定義されたHTML

<div id="item-1"></div> <div id="item-2"></div> <div id="item-3"></div> <div id="item-4"></div> 

デモを使うのか? –

+1

これを行う方法の例は? –

答えて

4

短い答え、はい。長い答えは以下のとおりです。

var obj1 = { 
    date: "04/12/1989", 
    title: "My birthday", 
    src: "path_to_some_image.png" 
} 
var obj2 = { 
    date: "12/25/2011", 
    title: "Christmas", 
    src: "santa_claus.gif" 
} 

objs = [obj1, obj2]; 
rand = Math.floor(Math.random() * objs.length); 

console.log(objs[rand].title + " is " + objs[rand].date); 
// "My birthday is 04/12/1989" 
// or "Christmas is 12/25/2011" 
+0

@ katspaugh:ありがとう:) –

2

確かに、この目的でMath.randomを使用できます。あなたのリストを配列に入れ、次に0と9の間の乱数を選択し、その項目を選択します。あなたはこれを4回行い、あなたは良いと思っています。が同じアイテムを2回(またはより頻繁に)欲しくない限り、私はあなたが望むものであると確信しています。繰り返しはありませんあなたがbiasedの確率分布を望まないなら、物事はもっと面白くなります。その場合には、アルゴリズムは次のように進む:

  1. I = 0と9の間の乱数 - >配列を選ぶ[I]
  2. (I == 9)場合 - >すべてが順調である、3
  3. をスキップ
  4. IF(I < 9) - >スワップ配列[i]と0と8との間の配列は、[9]
  5. J =乱数 - >ピック配列[j]は
  6. IF(jは== 8) - > (j < 8) - >スワップ配列[j]と配列[8]
  7. K = 0と7の間の乱数 - >配列[K] ...

を選択あなたはpattern.The方法もFisher-Yates Shuffleとして知られ得ます。

+0

+1;より多くの詳細と他のコードより少ないコード。 –

+0

すぐには分かりません! – katspaugh

1

オブジェクトの配列を使用する必要があります。

var items = [{ 
    'date': 'date of item 1', 
    'title': 'title of item 1', 
    'src': 'url/of/image-1'}, 
{ 
    'date': 'date of item 2', 
    'title': 'title of item 2', 
    'src': 'url/of/image-2'}, 
/* .. more items.. */ 
{ 
    'date': 'date of item 9', 
    'title': 'title of item 9', 
    'src': 'url/of/image-9'}, 
{ 
    'date': 'date of item 10', 
    'title': 'title of item 10', 
    'src': 'url/of/image-10'}]; 

for (var i = 1; i < 5; i++) { 
    var item = items.splice(Math.floor(Math.random() * (items.length)), 1)[0]; 

    var el = document.getElementById('item-' + i); 
    // insert the info you want in the DOM .. i just add it as text.. 
    el.innerHTML= item.date + ' - ' + item.title + ' - ' + item.src; 
} 

とJSONを使用してオブジェクトにアイテムを格納についてどのようにhttp://jsfiddle.net/qkMNb/1/

関連する問題