• 締切済み

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

最近社内のホームページを作ることになった初心者です。 トップページの中に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箇所にしか表示されません;; 改善点などございましたらご教授いただけないでしょうか?

みんなの回答

  • 15mm
  • ベストアンサー率65% (65/100)
回答No.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

  • KDASH-XP
  • ベストアンサー率46% (63/136)
回答No.1

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

関連するQ&A

  • ランダムURL表示&被らないようにしたいです!

    window.onload = function(){ var nice_a = 3; var nice_b = 3; var nice_c = 3; var nice_d = 3; var ifm_3 = document.getElementById('nice_1');//1つめ var ifm_4 = document.getElementById('nice_2');//2つめ var ifm_5 = document.getElementById('nice_3');//3つめ var ifm_6 = document.getElementById('nice_4');//4つめ var urls_random_1 = Math.floor( Math.random() * nice_a ); var urls_random_2 = Math.floor( Math.random() * nice_b ); var urls_random_3 = Math.floor( Math.random() * nice_c ); var urls_random_4 = Math.floor( Math.random() * nice_d ); var urls_nice_1 = new Array(); var urls_nice_2 = new Array(); var urls_nice_3 = new Array(); var urls_nice_4 = new Array(); /*1*/ urls_nice_1[0] = 'niceStore/niceStore_1.html'; urls_nice_1[1] = 'niceStore/niceStore_2.html'; urls_nice_1[2] = 'niceStore/niceStore_3.html'; /*2*/ urls_nice_2[0] = 'niceStore/niceStore_1.html'; urls_nice_2[1] = 'niceStore/niceStore_2.html'; urls_nice_2[2] = 'niceStore/niceStore_3.html'; /*3*/ urls_nice_3[0] = 'niceStore/niceStore_1.html'; urls_nice_3[1] = 'niceStore/niceStore_2.html'; urls_nice_3[2] = 'niceStore/niceStore_3.html'; /*4*/ urls_nice_4[0] = 'niceStore/niceStore_1.html'; urls_nice_4[1] = 'niceStore/niceStore_2.html'; urls_nice_4[2] = 'niceStore/niceStore_3.html'; ifm_3.src = urls_nice_1[s];//1 ifm_4.src = urls_nice_2[s];//2 ifm_5.src = urls_nice_3[s];//3 ifm_6.src = urls_nice_4[s];//4 } </script> 求める結果:ページをロードする度、それぞれのiframe内のURLがランダムで選定され 尚かつURLが被らないようにしたいです。 上記の内容で記述しますと、あたりまえですが表示されるURLが被ってしまいます。 これを回避したいのですがどうがご教授願いします。m(_ _)m

  • 複数の<iframe>内にHTMLをランダム表示

    以下のようなソースで、ランダムにHTMLをIFRAMEに読み込むソースを書いています。 (Javascript) window.onload = function(){ var c = 23; //ランダムに表示するiframe内URLの数 var ifm = document.getElementById('aaa');//frameIDを入力 var r = Math.floor( Math.random() * c ); var urls = new Array(); urls[0] = '../text/1.html'; urls[1] = '../text/2.html'; urls[2] = '../text/3.html'; urls[3] = '../text/4.html'; urls[4] = '../text/5.html'; urls[5] = '../text/6.html'; urls[6] = '../text/7.html'; urls[7] = '../text/8.html'; urls[8] = '../text/9.html'; urls[9] = '../text/10.html'; ifm.src = urls[r]; } (HTML) <iframe src="#" id="aaa" frameborder="0" marginwidth="0" width="115" marginheight="0" scrolling="no"></iframe> このような要領で、 id="aaa"にはtextフォルダ内のファイル1.html~10.htmlのうちからランダムで、 id="bbb"にはtextフォルダ内のファイル11.html~20.htmlのうちからランダムで、 id="ccc"にはtextフォルダ内のファイル21.html~30.htmlのうちからランダムで、 ・・・・ といった感じで以下のようなソースでそれぞれ読み込めればと思っているのですが、どうやったら可能でしょうか? <iframe src="#" id="aaa" frameborder="0" marginwidth="0" width="115" marginheight="0" scrolling="no"></iframe> <iframe src="#" id="bbb" frameborder="0" marginwidth="0" width="115" marginheight="0" scrolling="no"></iframe> <iframe src="#" id="ccc" frameborder="0" marginwidth="0" width="115" marginheight="0" scrolling="no"></iframe> javascriptにかんしてはあまり詳しくありませんので、ちょっと改変してコピペするくらいまでのソースを教えていただけませんでしょうか? よろしくおねがいします。

  • リロードするまでの間のクリック数をカウントして表示

    重ね重ね質問すいません。 先ほど、『リンクボタンからインラインフレーム内にクリックするたび順番に別のサイトに飛ばすようにするにはどうしたらよいでしょうか?※ランダムではなくあらかじめ決めた順番で飛ばしたいです できるならソースを教えてください』。 という質問をして↓の答えを頂いたのですが、更にこれにリロードするまでの間のボタンのクリック数をカウントしてリアルタイムで表示したいのですがなにを付け加えたらよいでしょうか?※リロード行われたらリセットでお願いします <script> var urls=["ttp://okwave.jp/","ttp://oshiete.goo.ne.jp","ttp://qanda.rakuten.ne.jp"]; var idx=0; function clickFunc(){ idx=idx<urls.length -1?idx+1:0; document.getElementById("hoge").src=urls[idx]; } window.onload=function(){ document.getElementById("hoge").src=urls[0]; } </script> <input type="button" onclick="clickFunc()" value="go"> <hr> <iframe src="" id="hoge" width=80% height=500px;></iframe>

  • <div>タグの中にscriptで表示

    プログラムを初めて2年目、JSは一年目です。 配列の文字列をランダム表示したいのですが、<div>タグの中にscriptで表示させるにはどうしたらよいでしょう? ソースは下記です。 ~~~~~~~~~~~~~~~~~~~~~~~~ <script type="text/javascript"> var comment = new Array(3) ;   //配列を作ってます。 week[0] = "なるほど" ; week[1] = "賛成" ; week[2] = "そう思いません。" ; var randnum = Math.floor( Math.random() * 3 ); // 0,1,2のランダム window.onload = function(){ setInterval('vi()' , 2000 ); } function vi(){ var e = document.getElementById('comment'); e.style.visibility = 'visible'; } // 2秒後にメッセージが表示されます。 </script> <div id="comment" style="visibility:hidden; position:absolute; border: 3px ridge gray; background-color:#ffffcc"> ★ここに配列の文字列を、ランダムで表示したい </div> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document.write(comment[ randnum]) ; をうまく使えないでしょうか? よろしくお願いします。

  • ランダムにページにアクセスしたい

    htmlを使い、複数のファイルからランダムに1つを選び表示するというページを作りたいと思っており、「http://www5e.biglobe.ne.jp/access_r/hp/javascript/js_075.html」を参考にしているのですが、こちらのページを参考にして作成すると、一度、ランダムで選ばれたURLが表示され、ユーザーがそのリンクをクリックすることでページが表示されるという形になります。これを、URLを表示すること無く、選ばれたページが直接表示されるためにはどのようにしたらいいのでしょうか?現在のソースは、 <HTML> <HEAD> <META HTTP-EQUIV="Content-Script-Type" CONTENT="text/javascript"> <TITLE>リンクをランダムに表示する方法</TITLE> </HEAD> <BODY> <SCRIPT TYPE="text/javascript"> <!-- //―――――――――――――――――――――――――――――――――――――― // 作成者 るび~/ACCESS R http://www5e.biglobe.ne.jp/~access_r/ //―――――――――――――――――――――――――――――――――――――― //―――――――――――――――――――――――――――――――――――――― // ユーザが設定する部分はここから!! //―――――――――――――――――――――――――――――――――――――― var rlink = new Array(); //リンクの配列 rlink[0] = "a.html"; rlink[1] = "b.html"; rlink[2] = "c.html"; rlink[3] = "d.html"; //―――――――――――――――――――――――――――――――――――――― // ユーザが設定する部分はここまで!! //―――――――――――――――――――――――――――――――――――――― var x = Math.floor(Math.random() * rlink.length); document.write('<A HREF="' + rlink[x] + '" TARGET="_blank">' + rlink[x] + '</A>'); //--> </SCRIPT> </BODY> </HTML> となっています。ご回答の程よろしくお願い致します。

    • ベストアンサー
    • HTML
  • ランダムJavascriptのblank表示

    リンク先のURLをランダムで表示させるため、下記の様に読み込みjavascriptファイルを使用していますが、ターゲットをブランク表示にできません。 windowopenなどと併用する必要があるのか、あまりjavascriptに詳しくないため、 記載箇所を具体的に教えて頂けると嬉しいです。 ■JSファイル側 urls=new Array(); //ランダムで表示したいURLを指定する urls[0]='http://www.・・・'; urls[1]='http://www.・・・; urls[2]='http://www.・・・'; function random() { a=Math.floor(Math.random()*urls.length); location.href=urls[a]; } ■HTMLページ側 <a href="JavaScript:random();">リンクテキスト</a>

  • インラインフレーム+ランダム表示

    インラインフレームの中をランダム表示させたいのです。 そこで、大元のページに <iframe src="○○○.html" width="570" height="300"name="AAA"align="left" frameborder="no" scrolling="no" > このページはインラインフレームを使用しております。 未対応ブラウザは閲覧できませんのでご了承下さい。 </iframe> と記述し、○○○.htmlの中には <html> <head> <title></title> <script language="JavaScript"><!-- jpURL = [ "tk1.html", "tk2.html", "tk3.html", "tk4.html" ]; n = Math.floor(Math.random() * jpURL.length); document.write('<frameset>'); document.write('<frame src="'+jpURL[n]+'" name="rightFrame">'); document.write('</frameset>'); // --></script> </head> </html> という記述をしています。 このようにランダムに表示できるように記述すると、左横に出る窪んだようになる縦線(frameborder!?)と縦のスクロールバーが出てしまいます。 これを表示しないようにしたいのですが、どうやっても消す事が出来ません。 これを無くし自然な感じにするには、どのようにしたら良いでしょうか? 是非教えてください。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 画像をランダムにスクリプト

    ホームページをHTMLで作成しております。画像をランダムにスクリプトしてますが、画像のサイズが大きすぎるので、HTMLでサイズ変更する場合の、HTMLをご教授ください。 width="300" height="200"を挿入でいいのでしょうか。 その場合の挿入箇所をお教えください。 現在、下記のHTMLを作成しております。 <script language="JavaScript"> <!-- var image=new Array (); image[0]="s/b/bike1.jpg" ; image[1]="s/h/hatake207.jpg"; var rnd=Math.floor(Math.random()*image.length); document.write(" <img src=' "+image[ rnd ]+ " '> "); //--> </script> 宜しくお願いします。

  • 2箇所にランダムに広告を表示したい。

    上手く行かないので質問させてください。 ページの上下に広告をランダムで表示させたいのですが、 どのようにやるのか分かりません。 1箇所だけ表示することはできましたが、2箇所表示させようとすると何も表示されない状態です。 ---- HTML ----- <html> <head> <script type="text/javascript" src="banner.js"></script> </head> <body onload="Banner()"> <div id="banner" align="center"></div> <br> 本文ゴニョゴニョ... <div id="banner" align="center"></div> <br> </body> </html> ----- banner.js ----- function Banner(){ var imgMax = 10; var imgRand = Math.floor(Math.random() * imgMax); switch (imgRand) { case 0: banner.innerHTML='広告その1<br>'; banner.innerHTML+='<a href="・・・" target="_blank"><img src="・・・"></a>'; break; --- 略 ---- id="banner"が2つあるのは×というのは分かりますが(一つ消すと表示されるので)、 こういう場合はどのように処理をしたほうが良いでしょうか。

  • 画像リンクをランダムに4つ表示する

    このようなタグを使って、画像リンクのランダム表示を作成しました。 ((hard内)) <script type="text/javascript"><!-- // var imglist = [ [ "画像1", "", "リンク先1" ] , [ "画像2", "", "リンク先2" ] ]; function RandomImageLink() { // var selectnum = Math.floor(Math.random() * imglist.length); // var output = '<a href="' + imglist[selectnum][2] + '">' + '<img src="' + imglist[selectnum][0] + '"' + ' alt="' + imglist[selectnum][1] + '"><br>' + imglist[selectnum][1] + '</a>'; // document.write(output); } // --></script> ((body内)) <script type="text/javascript"><!-- RandomImageLink(); // --></script> こうしてランダムに表示できるようになったのですが、私は『ランダムに1つ表示』ではなく、『ランダムに4つ表示』にしたいのです。 …どうすればいいのでしょうか? どなたか回答をお願いします。