• 締切済み

<li>の画像およびテキストリンクのランダム複数表示

javascriptでランダム表示する方法を教えて下さい。 サイト内に商品の一覧を作成しようと考えており、それぞれの商品画像、テキストリンクをランダムで動かしたいと思っております。 商品数は10点くらいになる予定です。 <div id="sample"> <ul>  <li>   <dl>   <dt>商品1</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li>  <li>   <dl>   <dt>商品2</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li> </ul> </div> ソースはこんな感じで、10点程の掲載予定です。 <li>~~</li>リスト10点をランダム表示する javascriptを教えて下さい。 よろしくお願いいたします。

みんなの回答

noname#84373
noname#84373
回答No.2

ランダムに1つだけと勘違い!ごめん。でっ。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>サンプル</title> <ul id="sample">  <li>   <dl>   <dt>商品0</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li>  <li>   <dl>   <dt>商品1</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li>  <li>   <dl>   <dt>商品2</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li>  <li>   <dl>   <dt>商品3</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li> </ul> <script type="text/javascript"> //@cc_on /*@if(@_jscript)attachEvent('on'+ @else@*/addEventListener(/*@end@*/'load', function(){ Array.prototype.shuffle_FY = function () {  var n = this.length;  var r;  var w;    while (n) {   r = Math.random() * n |0;   w = this[--n];   this[n] = this[r];   this[r] = w;  }  return this; }  var rnd;  var cnt = 0;  var prt = document.getElementById('sample');  var obj = prt.firstChild;  var objs = [];  var num = [];  do if (obj.nodeName == 'LI' ) { objs.push(obj), num.push(cnt++) } while (obj = obj.nextSibling);  num.shuffle_FY();  while (cnt) prt.appendChild(objs[num[--cnt]]); }, false); </script>

noname#84373
noname#84373
回答No.1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>サンプル</title> <ul id="sample">  <li>   <dl>   <dt>商品1</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li>  <li>   <dl>   <dt>商品2</dt>   <dd>商品画像</dd>   <dd>商品コメント</dd>   </dl>  </li> </ul> <script type="text/javascript"> //@cc_on /*@if(@_jscript)attachEvent('on'+ @else@*/addEventListener(/*@end@*/'load', function(){  var rnd;  var cnt = 0;  var obj = document.getElementById('sample').firstChild;  var objs = [];  do {   if (obj.nodeName == 'LI' ) {    cnt++;    obj.style.display = 'none';    objs.push(obj);   }  } while (obj = obj.nextSibling);  rnd = Math.floor(Math.random() * cnt);  objs[rnd].style.display = 'block'; }, false); </script>

iroom0928
質問者

お礼

有り難う御座います。 早速試したのですが、並べてる商品が消えてしまいます。 説明不足により、うまく伝わっておりませんでした。 商品の一覧を更新する都度、並び替えたいのですが、 どのようにすればよいですか? 宜しくお願い致します。