こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

ランダムにページを表示するスクリプト

最近社内のホームページを作ることになった初心者です。

トップページの中に3箇所、インラインフレームを使い別のページを
表示させるというものを考えております。

その際に、インラインフレーム内に表示させるページがランダムで選ばれるようにscriptを用いてやってみましたが、3箇所あるインラインフレームのうちの1箇所にしか表示されません・・・。


<script type="text/javascript">
window.onload = function(){
var c = 3; //
var ifm = document.getElementById('aaa');
var ifm = document.getElementById('bbb');
var ifm = document.getElementById('ccc');
var r = Math.floor( Math.random() * c );
var urls = new Array();

urls[0] = 'http://www.co.jp';
urls[1] = 'http://www.co.jp';
urls[2] = 'http://www.co.jp';
ifm.src = urls[r];
}
</script>



あとは3箇所のフレーム内にIDを設定すれば上手く良くと思ったのですが、1箇所にしか表示されません;;

改善点などございましたらご教授いただけないでしょうか?

投稿日時 - 2009-12-26 18:18:58

QNo.5548926

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

 var ifm = document.getElementById('aaa');
 var ifm = document.getElementById('bbb');
 var ifm = document.getElementById('ccc');
において、変数ifmが複数あることが原因です。
何度も同じ変数名を使っていますので、
 var ifm = document.getElementById('aaa');
 var ifm = document.getElementById('bbb');//一度目のifmを参照する間もなく次の代入
 var ifm = document.getElementById('ccc');

 var ifm = document.getElementById('ccc');
は同じ意味です。意味だけなら。


var c = 3;
var ifm=new Array(),i=0;
ifm[0]=document.getElementById('aaa')
ifm[1]=document.getElementById('bbb')
ifm[2]=document.getElementById('ccc')
var r = Math.floor( Math.random() * c );
var urls = new Array();

urls[0] = 'ht tp://w ww.co.jp';
urls[1] = 'ht tp://w ww.co.jp';
urls[2] = 'ht tp://w ww.co.jp';
for(;i<c;)ifm[i++].src=urls[r]

↑ちょっとだけ書き換えたバージョン。追加がやや簡単。


以下私の趣味。処理速度向上。のはず。改行がなければ結構短いはず。どちらも未確認(ぉぃ
for(var c=3,ifm=[

'aaa',
'bbb',
'ccc'

],url=[

'ht tp://w ww.co.jp',
'ht tp://w ww.co.jp',
'ht tp://w ww.co.jp'

][Math.random()*c|0];c;)document.getElementById(ifm[--c]).src=url

投稿日時 - 2009-12-27 16:25:45

ANo.1

IDを使い分けしているのに、変数ifmを使いまわしをしているからだと思います。

投稿日時 - 2009-12-27 12:33:05

あなたにオススメの質問