指定したフォルダの画像を一括でプリロードする方法

このQ&Aのポイント
  • ページが表示されたときに、指定した画像をプリロードするようJavaScriptで実装できます。
  • ファイル数が多い場合は手間がかかるため、一括でプリロードする方法があります。
  • 画像ファイルを一括でプリロードするための関数も用意されています。
回答を見る
  • ベストアンサー

指定したフォルダの画像を一括でプリロードしたい

ページが表示されたときに、指定した画像をプリロードするようjavascriptで実装しています。 preloadの引数に1つ1つプリロードしたいファイルを書いていかないといけないので ファイル数が多くなると手間です。 例えば img/photo1.jpg img/photo2.jpg img/thumb.jpg image/photo1.jpg image/photo2.jpg image/thumb.jpg という具合にimgとimageのフォルダがあってimgにだけある画像ファイル全てを一括でプリロード したいです。どのようなソースをかけばいいでしょうか? また、指定したフォルダ以下の画像ファイルを一括でプリロードする関数などがあるのでしょうか? function preload(imgs){   for(var i = 0; i < imgs.length; i++){    var imgObj = new Image();    imgObj.src = imgs[i];    } } preload(["./img/photo1.jpg", "./img/photo2.jpg", "./img/photo3.jpg"]);

質問者が選んだベストアンサー

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.2

こんにちは。 #1です。 外部jsファイルの場合は外部jsファイルを動的に作ってあげる必要があります。 HTMLからの呼び出し方法 <script type="text/javascript" src="js.php"></script> ==== 動作サンプル http://hppg.moe.hm/okwave/qa/q7544030/ ==== js.php <?php header ( 'Content-type: application/x-javascript' ); $qaDirs = dir ( './img/' ); $i = 0; $js = "var fileList = new Array();\n"; while ( false !== ($file = $qaDirs->read()) ) { if ( $file !== '.' && $file !== '..' ) { $js .= "fileList[$i] = \"img/" . $file . "\";\n"; $i ++; } } $qaDirs->close(); ?> window.onload = function() { <?= $js ?> var list = ''; for ( var i = 0; i < fileList.length; i ++ ) { list += fileList[i] + '<br>'; } document.getElementById('filelist').innerHTML = list; }

testmaster_x
質問者

お礼

javascriptだけでは指定したフォルダを一括プリロードできないんですか。。。 残念です。

その他の回答 (1)

  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 JavaScriptのみでは無理です。 ブラウザ上で動く言語であって、サーバ上のあれこれは出来ません。 やるとしたらPHP等のサーバ側で動く言語を利用してページのHTMLを生成する際に、フォルダ内のファイル一覧を取得してファイル名をJavaScriptの配列として書き出す方法が考えられます。 そうすれば、HTMLがクライアント側に送信された時にはファイル名が自動的に生成されます。 あとは、HTML内から画像ファイル名を引っ張ってとかあるかもしれませんが、HTML内に書いておくのも手間ですよね。

関連するQ&A

  • 画像のランダム表示

    初心者です。。 画像のランダム表示で、下のものを使っているのですが、 画像の上にカーソルをもっていったときに手のマークにしたいのですが、 どのようにすればできるのでしょうか? onclickを使っているからだと思うのですが、 A href=を使えばできるのでしょうか? よろしくお願いします。 <script type="text/javascript"> <!-- var imgs = new Array; var n = 5; var i; for(i=0;i<n;i++){ imgs[i] = new Image(); } imgs[0].src="image/001.jpg"; imgs[1].src="image/002.jpg"; imgs[2].src="image/003.jpg"; imgs[3].src="image/004.jpg"; imgs[4].src="image/005.jpg"; function disp(img){ img.src=imgs[Math.round(Math.random()*(n-1))].src; } //--> </script> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> </head> <body> <div align="center"> <img src="image/001.jpg" border="0" onclick="disp(this)"> </div> </body> </html>

  • jQueryで画像がちゃんとプリロードできているか

    jQueryを使ってロールオーバー用の画像を プリロードさせたいと考えていています。 jsファイルに、 $("<img>").attr("src", ***); みたいに内部的にimgを生成しました。 これが、本当にプリロードされているのかを確認する方法ってあるんですか? 宜しくお願いいたします。

    • ベストアンサー
    • AJAX
  • onClickで指定した以外の画像も変わってしまう

    Youtubeの動画をボタンを使って切り替えるように設定しています。 ========== Youtube動画表示 ========== ボタン1 ボタン2 ボタン3 という感じで配列しています。 ボタン1~3は、それぞれ同じ画像で表示しています。 btn.png:OFF時 btn_on.png:ON時 Javascriptは下記のように書いています。 ================ function change(obj){ var orgimg="img/btn.png"; var newimg="img/btn_on.png"; var imgs=document.getElementsByTagName('img') for(var i=0;i<imgs.length;i++){ if(imgs[i].className==obj.className){ if(imgs[i]==obj) imgs[i].src=newimg; else imgs[i].src=orgimg; } } }; ================ ボタン部分はそれぞれ下記のようにしています。 ================ <a href="http://www.youtube.com/watch?v=1111111" onclick="return Obj.replaceObject(this.href);"><img src="img/btn_on.png" width="16" height="15" border="0" alt="movie 1" onClick="change(this)"></a> <a href="http://www.youtube.com/watch?v=2222222" onclick="return Obj.replaceObject(this.href);"><img src="img/btn.png" width="16" height="15" border="0" alt="movie 2" onClick="change(this)"></a> <a href="http://www.youtube.com/watch?v=3333333" onclick="return Obj.replaceObject(this.href);"><img src="img/btn.png" width="16" height="15" border="0" alt="movie 3" onClick="change(this)"></a> ================ これでちゃんとクリックしたボタンのみがON時の画像になり、それ以外はOFF時の画像に戻るのですが 同ページ上に表示している全く関係ない画像(例えばタイトル画像やバナー等)が 何故かOFF時の画像が拡大された状態のもの(タイトルやバナーで指定してあるサイズ)に切り替わってしまいます。 CSSで背景に指定してある画像やボタン設定してある画像は大丈夫なのですが 普通にHTML上に指定してあるJPGやPNG画像が変わってしまいます。。。 どこかおかしな部分があると思うのですがわからず途方にくれております。 何方か教えて下さい。どうぞ宜しくお願いします。

  • XMLからの画像指定

    PHP初心者です。 現在、API経由で吐き出されるXMLをPHPにて処理しております。 その中で、{photo」の要素である画像「true_image」を、カテゴリー「category」中のコード「code」(ここではCtype→Atype→Btypeの順)を指定して画像を配置したいのです。 以下XML -------------------------------- <item> <photo> <true_image>001.jpg</true_image> <sub_image>001_2.jpg</sub_image> <category> <code>Atype</code> </category> </photo> <photo> <true_image>002.jpg</true_image> <sub_image>002_2.jpg</sub_image> <category> <code>Btype</code> </category> </photo> <photo> <true_image>003.jpg</true_image> <sub_image>003_2.jpg</sub_image> <category> <code>Ctype</code> </category> </photo> </item> -------------------------------- 今のところ、下記のコードで止まってしまっています。。 以下php ---------------------------------- <?php function h($str) { return htmlspecialchars($str, ENT_QUOTES); } $xml = simplexml_load_file("http://api.aaa.aaaa?key=aaaa.aa"); $hits = $xml->item foreach ($hits as $hit) { print<<<EOF <img src="{$hit->photo[0]->true_image}"> <img src="{$hit->photo[1]->true_image}"> <img src="{$hit->photo[2]->true_image}"> EOF; ?> ---------------------------------- xpathを使用して画像を特定する?のでしょうか。 正しいのかどうかも良く分からないで試しているため xpathの指定も何だか良く理解できず、方向性が良く分からなくなってしまいました。 恐らく初歩の初歩なのでしょうが、迷路に入ってしまったようです。 道先の案内でもして頂けると助かります。。

    • 締切済み
    • PHP
  • javascriptで画像の切替えとCSSの指定

    javascriptで画像の切替えとCSSの指定でわかりません 以前、以下のhtmlを雑誌を見ながらやってみたのですが、わからないことが2点あります。 回答を頂ければ大変助かります。 1つ目の質問です。最初の画像が切り替わるのに10秒かかってしまうのですが、これを最初の画像とともにすべての画像の切替を5秒にしたいのですがわかりません。 2つ目の質問です。CSSで指定してある画像にあてはめたいのですが、書き方がわかりません。 以下のimgs[0] = "http://www.●.com/●1.jpg"; この部分に <div id="▲img"></div> を付けていいものなのか、 別な書き方があるのかがわかりません。 CSS側→ #▲img { background-image: url(..●1.jpg); } <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <HTML> <HEAD> <script type="text/javascript"> var imgs = new Array(); var links= new Array(); imgs[0] = "http://www.●.com/●1.jpg"; imgs[1] = "http://www.●.com/●2.jpg"; links[0]="http://www.■.co.jp" links[1]="http://www.■.co.jp" i = 0; function Blend(){ document.getElementById("imgframe").filters.blendTrans.apply(); document.all.item("imgframe").src = imgs[i++]; document.getElementById("imgframe").filters.blendTrans.play(); document.getElementById("link").href=links[i]; if(i>=imgs.length) i=0; } onload = function(){setInterval(Blend,5*1000)} </script> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 12.0.0.0 for Windows"> <META http-equiv="Content-Type" content="text/html; charset=ISO-2022-JP"> <META http-equiv="Content-Style-Type" content="text/css"> <META name="IBM:HPB-Input-Mode" content="mode/flm; pagewidth=750; pageheight=900"> <TITLE></TITLE> </HEAD> <BODY> <a href="http://www.■.co.jp" id=link> <img src="http://www.●.com/●1.jpg" id="imgframe" style="filter:blendTrans(duration=2);"></img> </a> </BODY> </HTML> 以上です。 何卒よろしくお願い致します。

  • Javascript画像切り替えIEでしか動かない

    Javascriptで画像を切り替えています。 IEでは動くのですが他のブラウザだと動きません。 FirefoxやChromeは何か特殊なのでしょうか? わかる人いたら教えてください。 <script type="text/javascript"> var imgs = new Array(); imgs[0] = "img/top2.jpg"; imgs[1] = "img/top3.jpg"; imgs[2] = "img/top1.jpg"; i = 0; function Blend(){ document.getElementById("imgframe").filters.blendTrans.apply(); document.all.item("imgframe").src = imgs[i++]; document.getElementById("imgframe").filters.blendTrans.play(); if(i>=imgs.length) i=0; } onload = function(){setInterval(Blend,3*1000)} </script> <img src="img/top1.jpg" width="940" height="350" id="imgframe" style="filter:blendTrans(duration=1);">

  • オンマウスでの拡大画像の位置指定

    サムネイル画像にオンマウスした時の拡大画像の位置指定がよくわかりません。今の状態だとマウスを乗せた時に拡大画像がサムネイル画像とかぶってしまい、他のサムネイルが隠れてしまいます。できたら、拡大画像をサムネイル画像かぶらせず、左側に表示させたいのですがどう指定したらよいのでしょうか?ついでに拡大画像を右側、上、下に指定したい時の表示方法もあわせてアドバイスいただけたらありがたいです。 それと、サムネイル画像の下にちょっとしたコメントを記載したい時はどうしたら良いのでしょうか?どうかよろしくお願いします。 <script> var src1="image01.jpg" var src2="image1.jpg" var src3="image02.jpg" var src4="image2.jpg" var src5="image03.jpg" var src6="image3.jpg" var src7="image04.jpg" var src8="image4.jpg" </script> <p align="center"> <img src="image01.jpg" onmouseover="this.src=src2" onmouseout="this.src=src1"> <br> <br> <img src="image02.jpg" onmouseover="this.src=src4" onmouseout="this.src=src3"> <br> <br> <img src="image03.jpg" onmouseover="this.src=src6" onmouseout="this.src=src5"> <br> <br> <img src="image04.jpg" onmouseover="this.src=src8" onmouseout="this.src=src7"> <br> </p>

    • 締切済み
    • CSS
  • 画像の設定について

    教えてください! 画像を表示するときに画像ファイルそのものを 指定すると思いますが その指定を、フォルダーの中のものという指定は することはできないのでしょうか? c:\photo\photo0001.jpg  が普通ですが c:\photo\        と入ってるものを表示 したい 但し、photoのフォルダーの中には画像は一つしか 存在しないとします よろしくお願いします

    • ベストアンサー
    • HTML
  • firefoxでプリロードされません

    マウスが乗るまで画像がよみこまないので、 画像を先に読み込ませるためのものを入力したところ safariでは希望通りに動いたのですが、 firefoxでは入力前と全く変わりません。 何か間違っているのか、教えてください。 お願いします! 以下がcssに入力したものです。 #image-preload{ width: 0px; height: 0px; display: inline; background-image:url('images/home_04.jpg'); } 以下がhtmlに入力したものです。 <div id="image-preload"></div>

    • 締切済み
    • CSS
  • 画像を貼り出してその後、その画像をクリックすると大きく表示されるように

    画像を貼り出してその後、その画像をクリックすると大きく表示されるようにしたいのですが、どうしたら良いかわかりません。 <html> <head> <title>画像を大きくする</title> <script type="text/javascript"> <!-- var imagetachi = 5; //イメージの切り替え function kirikae(num){ document.main.src = "big/photo" + num + ".jpg"; } // --> </script> </head> <body> <center> <script type="text/javascript"> <!-- //サムネールの書き出し for (i=1; i <=imagetachi; i++) { document.write('<img src="small/photo' + i + '.jpg" onclick="kirikae(i)">'); } // --> </script> <hr> <img src="big/photo1.jpg" name="main"> </center> </body> </html> どうやらkirikae(i)をkirikae(' + i +')にすれば良いとまではわかったのですが、なぜ(' + i +')にしないといけないのかがわかりません。 (' + i +')にすると関数の処理が document.main.src = "big/photo" + + i + + ".jpg";になってしまいませんか?? 初心者なので+ i +の意味がよくわかりません。 よろしくお願い致します。

専門家に質問してみよう