連番ページをボタンクリックでページ送りさせたい。



0   名前: Taijo : 2006/08/12(土) 10:23  ID:3yOiHYYJ
初めまして。

 No,2445の花子さんがしたいと思うのに近いことを考えています。花子さんのスレッドにも同様に質問しましたが、新しく立てた方が良いかと思いました。ご了承ください。
 概要は連番のページの0.html〜か、1.html〜を、[戻る]、[進む]のボタンでページ送りさせたいと考えています。
 ただNo,2445の花子様と違うのは、[戻る]、[進む]のボタンはindex.htmlで、切り替わるページの表示場所は同ページの iframe 内というのが理想です。

 分かりやすく言うと、漫画のビューワのjpg部分がhtml表示できればいいのです。
 
 No,2445の>>1のかふぇおれ様のスクリプトに近い感じが私にもやりやすそうなので、あれでボタンが切り離されたらできるのかな? と考えています。。

 どなたかよろしくお願い致します

1   名前: Taijo : 2006/08/12(土) 10:23  ID:3yOiHYYJ
 参考スレッドの書き込みがNo、だけではダメなのですね。一つ前の質問を読んで知りました。
こういったところに投稿する機会がないもので申し訳ありません。

http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view&no=2445&p=2

 です。

 再度皆さまよろしくお願い致します

2   名前: m035 ◆Wpzr1YKOiq : 2006/08/12(土) 10:23  [URL]  ID:4KIacXXc
iframeのURLを変更するJavaScriptを探してみましたか?
「iframe」「url」「変更」「JavaScript」の4つをキーワードにGoogleで検索すれば見つけられるはずです。
そして、それを件のスクリプトのurl変更部分に適応すれば出来ます。

3   名前: かふぇおれ : 2006/08/12(土) 10:23  ID:MRwTGpOM
えっと、
インラインフレーム内に表示されているファイル名を所得して、
そのファイル名から数字を切り出して、
プラス1(マイナス1)を計算し桁数等を揃え、
計算結果が有り得ないファイル名だったら戻る
って感じですよね。

インラインフレーム内のファイル名は
インラインフレーム名.location.pathname.split ('/').reverse ()[0].match (/\d+/) で取れます。
インラインフレーム内の URI 移動は
インラインフレーム名.location.href = 移動先ファイル名
今回の場合は Script の計算結果が移動先ファイル名となるはずですよね。

さあ、材料は出揃った。頑張ろう〜♪

4   名前: Taijo : 2006/08/12(土) 10:23  ID:ceVcAoUW
みなさんありがとうございます。

 >>2 のご指摘、ありがとうございます。一応探しまくりました。そして素人頭で色々チャレンジしてみたのですができなかったので投稿しました。それでも返信が頂けたことが嬉しいです。ありがとうございます。

 かふぇおれ様、ありがとうございます。
これからトライしてみます。結果またご報告させて頂きます。

 がんばります!!

5   名前: Taijo : 2006/08/12(土) 10:23  ID:ceVcAoUW
 かふぇおれ様ありがとうございました!
 もしもですが同じ事をしたい方のために書いておきますね。

http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view&no=2445&p=2

の >>1 のスクリプトに教えて頂いた記述を付け加えただけです。この時、

 1.htmlから始めると進むときボタンを最初だけ2回クリックしないとダメしたが、0から始めると大丈夫でした。
 しかし今度は0には戻れなくなるのでbacK()の01を00に変えます。

 それでうまく行きました。

 m(_ _)m ありがとうございました。

6   名前: かふぇおれ : 2006/08/12(土) 10:23  ID:Ji0blfRq
Taijoさん、良かったですね。

>1.htmlから始めると進むときボタンを最初だけ2回クリックしないとダメ

今更と言われるかも知れませんが、理由は簡単。
http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view2&f=2445&no=1
で私が書いた Script では num を先に宣言してしまっている為に
function next() や function back() で再利用されてしまうのですよね。
だから http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view2&f=2445&no=44 を参考にして頂いた方が、より良いモノになるのではないかと…(汗

7   名前: Taijo : 2006/08/12(土) 10:23  ID:GxyO0gtK

 ちょっと困りました・・・。
ツールバーとかがないウィンドウ表示にしたら動作しないのはブラウザの仕様でしょうか? 
Win で IE も firefox もダメでした。

 iframe だけでしょうか? 通常のフレームでも同じでしょうか。

 せっかくだからめいっぱい表示したかったのですが無理なのでしょうか。
最初にアドレスバーのみのウインドウで開いたとき、xxxx/index.htmlが標示さますが、その時index.html部分だけを消してxxxx/ でエンターを押して再度読み込むと 同じアドレスバーのみのウインドウでも動作します。


 対処作をご存知でしたら教えて下さい。



8   名前: Taijo : 2006/08/12(土) 10:23  ID:GxyO0gtK
 解決しました!

 indexの前のリンクで
 <a href="xxxx/index.html>
にしていたからダメだったことに気付きました。
<a href="xxxx/">
ででうまく行くようになりました。

 お騒がせしました<(_ _)>


9   名前: Taijo : 2006/08/12(土) 10:23  ID:Kf7EQXu9
 ページ数が多いのでセレクトボックスからページを飛ばしたいと思っています。
現在のページを例えば1として、セレクトボックスで10ページに飛ばし、そして進むボタンを押したら、2ぺーじになってしまいます。当たり前なんでしょうけど。
できれば飛ばした先から+1、−1で動いて欲しいと思っています。
 例えば10に飛ばしたとしたら。進むを押せば11に、戻るを押せば9にという感じです。

 上記のスクリプトからでは無理なのでしょうか?
セレクトボックスの書き込みは現在以下の通りにしています。
<form>
<select name="FSGo" size="1" onchange="FC(this.form)">
<option>0</option>
<option>1</option>
#以下長々・・・。
</select>
</form>

<script>
<!--
function FC(WO) {
if (WO.FSGo.selectedIndex == 0) { parent.iframeの名前.location.href ="0.html" }
if (WO.FSGo.selectedIndex == 1) { parent.iframeの名前.location.href ="1.html" }}
#以下長々・・・。
//-->
</script>

です。これがわかればいきなりラストページやトップページに持って行くボタンも作れますよね。ただページ数が増えるとここの書き込みが増えるのが難点ですけど。

 ぜひご教授下されば幸いです。。

10   名前: m035 ◆Wpzr1YKOiq : 2006/08/12(土) 10:23  [URL]  ID:6D2htUvn
next()とback()の一番初めに現在のページ番号を>>3を参考にnumに代入してから加算・減算すれば問題ないはずです。

>function FC(WO) {
>if (WO.FSGo.selectedIndex == 0) { parent.iframeの名前.location.href ="0.html" }
>if (WO.FSGo.selectedIndex == 1) { parent.iframeの名前.location.href ="1.html" }}
>#以下長々・・・。
は以下に出来るのでは?
function FC(WO){
parent.iframeの名前.location.href=WO.FSGo.selectedIndex+".html";
}

11   名前: Taijo : 2006/08/12(土) 10:23  ID:Kf7EQXu9
 m035様 ありがとうございます。セレクトの飛びは教えて頂いた記述でうまく行くようです。書き足さなくて良いのが助かります!

 しかしどうも進む戻るの件がいまいちうまく行きません。今使っているスクリプトは以下ですが、>>現在のページをnumに代入する
ということが私にはできません。以下のnumが現在のページnumだと思っていました。

<script type="text/javascript">
<!--
selfurl =window.location.pathname;
xx =selfurl.split("/"); xx.reverse();
yy = xx[0].split("."); num = yy[0];
function next(){
フレームの名前.location.pathname.split ('/').reverse ()[0].match (/\d+/);
num = ++num;
nexturl = num +'.html';
フレーム.location.href = nexturl;
}
function back(){
if( num != 00 ){
num = --num;
backurl = num +'.html';
waku.location.href = backurl;
}
}
//-->
</script>

ちなみに<iframe src="0.html">で0から始めています。

 できればもう少し教えて下さい。申し訳ありません。

12   名前: m035 ◆Wpzr1YKOiq : 2006/08/12(土) 10:23  [URL]  ID:6D2htUvn
>selfurl =window.location.pathname;
>xx =selfurl.split("/"); xx.reverse();
>yy = xx[0].split("."); num = yy[0];
雑ですが、以下のようにすればよろしいかと。この場合上に示した3行は要りません。
どうして動作しないのかと言うと、
http://www.tagindex.com/cgi-lib/q1bbs/patio.cgi?mode=view2&f=2445&no=1
では「スクリプトを動作させるページ」=「ジャンプするページ」なので、numはロード時に取得される前提がありますが、今回はiframeを使っていてnumが更新されない、かつ、セレクトボックスでページジャンプするため、numをnext()やback()を使ってプラスマイナスすることがないからです。
function next(){
var num=フレームの名前.location.pathname.split('/').reverse()[0].match (/\d+/);
フレーム.location.href=(num+1)+'.html';
}
function back(){
var num=フレームの名前.location.pathname.split('/').reverse()[0].match (/\d+/);
if(num!=0){
backurl = (num-1) +'.html';
フレーム.location.href=(num-1)+'.html';
}

13   名前: Taijo : 2006/08/12(土) 10:23  ID:Kf7EQXu9
m035様 お世話になります。

 戻るはうまく行くのですが進むがセレクト関係なく進みません。
色々実験してみましたが私の知識ではお手上げです。
 進めると、Not Found に
The requested URL /xxxxxx/61.html was not found on this server

と出て分かったのは、二桁になり、一桁目の1だけはそのままで、11、21、31、41 と二桁目が増えていっているようです。

 そうならないようにすれば良いのだろうと思いいろいろやりましたがわたしなりにいじれるところがもう無くなりました。

 よろしくご教授くだされば幸いです。

14   名前: Taijo : 2006/08/12(土) 10:23  ID:Kf7EQXu9
 解決致しました!!

next()部分の
フレーム.location.href=(num+1)+'.html';

の(num+1)を(++num)にしたらうまく動作しました。

 m035様、そして皆さまありがとうございました。

取り急ぎご報告まで。

 

15   名前: m035 ◆Wpzr1YKOiq : 2006/08/12(土) 10:23  [URL]  ID:6D2htUvn
>>14
凡ミスしました。
numには文字列が入っているので
num=num-0;

num=parseInt(num);

num=eval(num);
のように数値化する必要がありました。
もしくは、>>14の方法で、
++num

--num
のようにすれば文字列のままでも扱えます。

16   名前: Taijo : 2006/08/12(土) 10:23  ID:Kf7EQXu9
>>15 いろいろでできるのですね。

 ところでせっかくですので

var num=フレームの名前.location.pathname.split('/').reverse()[0].match (/\d+/);

を使ってnumを親フレームに表示出来たらと思い

<script>
<!--
document.write(フレーム名.location.pathname.split('/').reverse()[0].match (/\d+/);
// -->
</script>

としてみたのですが、表示はIE6だと0から動きませんでした。firefoxだとnullと表示されてしまいます。

 理解出来ないのは、それでnumをよみとっているからそこから+したり−したりで動くわけですよね。なのに単独だと表示されない。
上記の記述は何かと組み合わせないとnumとして認めてくれないのでしょうか?

 どなたかご教授下されば幸いです。



17   名前: m035 ◆Wpzr1YKOiq : 2006/08/12(土) 10:23  [URL]  ID:YOOzqseE
document.write(フレーム名.location.pathname.split('/').reverse()[0].match (/\d+/);
は括弧が足りません。
document.write(フレーム名.location.pathname.split('/').reverse()[0].match (/\d+/));
では?
それと、これだと親フレームのロード前しか文字の書き出しが有効ではありませんし、iframeがロードされる前に実行されるのでは?
iframeのonloadで関数を呼び出し、呼び出された関数で、テキストボックスなどに表示するか、innerHTMLもしくはDOMで書き出した方がいいと思います。
あとはnext()、back()からもonloadで呼び出した関数を呼び出すようにしておくとなおいいでしょう。

18   名前: Taijo : 2006/08/12(土) 10:23  ID:Q1d0BQqX
m035 様 いつもありがとうございます。

 せっかく学んだので応用出来たらと思ったのですが、仰るとおりうまく行きませんのでiframe の onload での関数呼びだしで行くことにします。

 当初の質問に関して納得のいくものが出来ましたので、この掲示板の質問はこれで一旦終了しようと思います。

 ご回答下さった方はもとより読んで頂いた方ありがとうございました。
 

一覧へ戻る