プロが教える店舗&オフィスのセキュリティ対策術

画像ファイルは1.jpgからの連番で保存さえており、
1.jpgから順に表示するプログラムを作っています。
ファイルが存在してもfilesizeとsizeプロパティーはundefinedです。
画像ファイルの数はよく変わるのでfor I=1 to 100のようにならないように作らないといけません。
なのでこのプログラムを手直ししてほしいです。
<!DOCTYPE html>
<html><head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<TITLE>TeraPad</TITLE>
<script type="text/javascript"><!--
function fileCheck(){
var fileNo = 1;
var file = fileNo+".jpg";
while(file.size != -1){ // ファイルサイズを取得
document.getElementById("book").innerHTML = document.getElementById("book").innerHTML + "<img border=0 src="+file+" width=300 height=300 alt=漫画(ページ"+fileNo+")>"+fileNo;
//alert(file.size+" "+file.filesize);
if (fileNo >= 100){
alert("画像数が多すぎます。");
break;
}

fileNo=fileNo+1;
file = fileNo+".jpg";
}
}

// --></script>
</head>
<body onload="fileCheck();">
Hello.
<div id="book"></div>
</body>

A 回答 (2件)

こんばんは。


質問の意図と異なる回答でしたら、ご容赦ください。

基本的にクライアントで動くJSで、ファイル数などを取得するのは無理なので、
画像の枚数を引数にとって、連番にした画像を読み込む関数を作り、
それをアルバム(?)ごとに、それぞれのページで実行させるのがシンプルだと思います。

すみませんが、ちょっと僕の読解力が足らず、現状のコードを理解しかねますので、
手直しというより、完全に書き換えてしまいます。
それから、画像はフォルダにまとめず、htmlと同じ階層に全て置いてあるのでしょうか。
そのような前提でしたら、下記のコードで動くと思います。

function appendPages(pageCount) {
var book = document.getElementById("book");
var dir = ""; //画像フォルダのパス
for (var i = 0; i < pageCount; i++) {
var page = new Image();
page.src = dir + i + ".jpg";
book.appendChild(page);
}
}

appendPages(100) //ページごとに設定

画像数をきちんと取得してやりたいなら、PHPでやるべきのような気がしますね。
どうしてもJSでそこまでやりたいなら、IE限定ですが↓↓

https://oshiete.goo.ne.jp/qa/7180158.html
    • good
    • 1

画像ファイルを 1.jpg から順に連番で在るだけ表示するプログラム例


画像を1件ずつ読み取るので、少々遅くなります。

<script>
function loader(_){
_ ; var sx = function(ev){
_ ; _ ; img = ev.currentTarget;
_ ; _ ; document.getElementById("book").appendChild(img);
_ ; _ ; fx(parseInt(img.dataset.nextNo));
_ ; };
_ ; var ex = function(ev){
_ ; _ ; img = ev.currentTarget;
_ ; _ ; console.log('nothing: ' + img.src);
_ ; };
_ ; var fx = function(no){
_ ; _ ; var img = new Image();
_ ; _ ; img.dataset.nextNo = no + 1;
_ ; _ ; img.addEventListener('load', sx, false);
_ ; _ ; img.addEventListener('error', ex, false);
_ ; _ ; img.alt = '画像(ページ@)'.replace(/@/, no);
_ ; _ ; img.src = no + '.jpg'; // start loading
_ ; };
_ ; fx(1);
}
</script>
<body onload="loader()">
<div id="book"></div>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!