• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ajax LightBoxを使ったサムネイル枚数制限)

Ajax LightBoxを使ったサムネイル枚数制限

このQ&Aのポイント
  • Ajaxを使用してLightBoxでサムネイル表示をしているが、サムネイルの枚数制限は可能か?
  • サムネイルの表示は5枚ごとに分けて行い、アイコンをクリックすることで切り替えができる
  • 画像の切り替えはページの遷移を行わずに行いたい

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

  • ベストアンサー
  • talepanda
  • ベストアンサー率58% (45/77)
回答No.2

#1のヒントでここまで書けるなら、聞く前に自分で書いて試してみましょう^^; >最後の画像の次にphotoフォルダを参照してしまいます。 >どうも空が入ってしまっているような気がします。 この意味がちょっと良くわかりませんが(photoフォルダって?、最後の画像の次って?)、直すとすれば、 var result = ""; for (var i = 0; i < list.length; i++) { result += '<a href="photo/'+list[i]+'" rel="lightbox[flower]" title=""><img src="thumbnail/'+list[i]+'"></a>'+(((i+1) %5 == 0)?"<br/>":""); if(i > 0 && (i+1) %15 == 0) { thumbnail.push(result); result = ""; } } if ("" != result) { thumbnail[x].push(result); } かな? forループを抜けるときに、i%15==0以外だと、xがインクリメントされないので、そのあとの if ("" != result) { thumbnail[x] = result; } は最後から一個手前のresultを最後の(15枚未満のサムネイルの)resultで上書きしてしまうことになりますよね。 それが、冒頭の問題と関係するのかよくわかりませんが。

yukafuka
質問者

お礼

解決いたしました。 いろいろとありがとうございました。

その他の回答 (1)

  • talepanda
  • ベストアンサー率58% (45/77)
回答No.1

>サムネイルで表示される枚数の制限は可能でしょうか? 可能です。 >アイコンもURLのリンクではなく、 >ページ自体は遷移せずにサムネイルのみが変更されるように >したいと思っているのですが、 >これは可能なのでしょうか? 可能です。 やり方は色々あると思いますが、printTagで15枚ずつのサムネイルのhtmlをグローバルな配列に入れてあげて、矢印が押されたら対応するhtmlを$("slide").innerHTMLに設定する、という感じでいいんじゃないですか? 是非、自分でちょっと書いてみてください。 その上で、わからないところがあれば、お答えできると思います。

yukafuka
質問者

お礼

回答ありがとうございます。 以下のようなコードで一応動きましたが、 最後の画像の次にphotoフォルダを参照してしまいます。 どうも空が入ってしまっているような気がします。 thumbnail = new Array(); var page = 0; window.onload = function () { var url = "getfilelist.cgi?cache="+(new Date()).getTime(); new Ajax.Request(url, { method: "get", onComplete:printTag }); } function printTag(httpObj) { var LF = String.fromCharCode(10); var list = httpObj.responseText.split(LF); var result = ""; var x = 0; for (var i = 0; i < list.length; i++) { result += '<a href="photo/'+list[i]+'" rel="lightbox[flower]" title=""><img src="thumbnail/'+list[i]+'"></a>'+(((i+1) %5 == 0)?"<br/>":""); if(i > 0 && (i+1) %15 == 0) { thumbnail[x] = result; x++; result = ""; } } if ("" != result) { thumbnail[x] = result; } slide(); } function slide () { $("slide").innerHTML = thumbnail[page]; initLightbox(); } function nextPage () { if (thumbnail.length-1 > page) { page++; slide(); } } function prevPage () { if (page > 0) { page--; slide(); } }

関連するQ&A