javascript での ページング処理について質問です。

得意ではないので簡単な処理でお願いします。

data[20] の データを持っています。5件ずつ表示していきたいと思います。
function hoge1(max) {
hoge.document.createElement('div');
for ( i=0; i<MAX; i++) {
  if (?????) { ← どうすれば?? 
hoge.style.display = 'none';
}
hoge.appendChild(sidebarEntry);
}
}
それと onclickで(next 5)(back 5) などでのfunctionもつけてご教授いただけたら
ありがたいです。
ちょっとお手上げ状態なのでよろしくお願いします。

回答の条件
  • URL必須
  • 1人10回まで
  • 13歳以上
  • 登録:2010/05/07 18:24:48
  • 終了:2010/05/08 18:24:10

ベストアンサー

id:f-ikesan No.3

f-ikesan回答回数6ベストアンサー獲得回数22010/05/08 01:38:46

ポイント26pt

外部jsファイルには、どのような記述をしてあるのでしょうか?

またnext と back が動作しないとはエラーが出ているのでしょうか?


一番始めに回答させていただいたコードのJavaScriptのコードのみを外部jsファイルに抜粋して

検証しましたが問題ありませんでした。


現在使用しているコードを掲載してくだされば、原因がすぐにわかるかと思います。


ダミー:http://www.google.co.jp/

id:xv1700

ありがとうございます。

ページング処理が可能になりました。

最後にひとつだけご教授いただきたいのですが

next と back を inputタグに変更しまして

初期表示でbackを非表示にnextをいれたときに表示などしていきたいのですが・・・

どのようにすればよろしいでしょうか?

2010/05/08 17:55:43

その他の回答(2件)

id:f-ikesan No.1

f-ikesan回答回数6ベストアンサー獲得回数22010/05/07 20:28:26

ポイント27pt

ささっと書いたものですので、「考え方が変、リファクタリングの余地が多々ある」など色々あるかと思いますが、ご了承ください。

タグを半角に置き換えて使用してください。

<html>

<head>

<script language="JavaScript" type="text/JavaScript">

<!--

var data = Array("t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","t18","t19","t20");

var w = 5; // 1ページに表示させる項目数

var bs = 0;

var be = 0;

var ns = 0;

var ne = 0;

function page( s, e ) {

var rlt = "";

for( var i=s; i<=e; i++) {

rlt += data[i] + "<br>";

}

document.getElementById("main").innerHTML = rlt;

(s-w)<0? bs = 0 : bs = s-w;

(s-1)<0? be = w-1 : be = s-1;

ns = e+1;

(e+w)>data.length? ne = data.length-1 : ne = e+w;

var eleBack = document.getElementById("back");

if( s == 0) {

eleBack.style.display = "none";

} else {

eleBack.style.display = "inline";

}

var eleNext = document.getElementById("next");

if( e == data.length-1) {

eleNext.style.display = "none";

} else {

eleNext.style.display = "inline";

}

}

window.onload = function() {

page(0, w-1);

}

//-->

</script>

</head>

<body>

<div id="main"></div>

<span id="back"><a href="#" onClick="page(eval('bs'), eval('be'))">back</a> </span>

<span id="next"><a href="#" onClick="page(eval('ns'), eval('ne'))">next</a></span>

</body>

</html>

ダミーURLです ( http://www.google.co.jp/ )

id:xv1700

ご回答ありがとうございます。

一列で表示させるところまでは行ったのですが・・・・

(s-w)<0? bs = 0 : bs = s-w;

(s-1)<0? be = w-1 : be = s-1;

ns = e+1;

(e+w)>data.length? ne = data.length-1 : ne = e+w;

上記は何をしているのか理解できませんでした。申し訳ないです。

図1(5件ずつ表示)

 なまえ1  

 なまえ2

 なまえ3

 なまえ4

 なまえ5

<back> <naxt>

現在は、20件ただたんに表示されています。

もう少しご教授いただけたら幸いです。

2010/05/07 21:23:08
id:f-ikesan No.2

f-ikesan回答回数6ベストアンサー獲得回数22010/05/07 22:49:02

ポイント27pt

(s-w)<0? bs = 0 : bs = s-w;

(s-1)<0? be = w-1 : be = s-1;

ns = e+1;

(e+w)>data.length? ne = data.length-1 : ne = e+w;


下記のように書きかえることが出来ます。

表示対象のデータが格納されている配列の添え字の範囲(今回は0~19)を超えないように制御しています。


if( (s-w)<0 ) {

bs = 0;

} else {

bs = s-w;

}


if( (s-1)<0 ) {

be = w-1;

} else {

be = s-1;

}


ns = e+1;


if( (e+w)>data.length ) {

ne = data.length-1;

} else {

ne = e+w;

}


始めのは「三項演算子」という書き方です。

用途にもよると思いますが、可読性が良くなりますので、覚えておいて損はないかと思います。

http://ja.wikibooks.org/wiki/JavaScript_If%E6%96%87%E3%81%AE%E5%...

id:xv1700

なるほど。

ありがとうございます。

それと、先ほどのロジックなのですが、htmlに

<script type="text/javascript" language="JavaScript" src="/js/hoge.js"></script>

とし呼ぶ形をとっています。

5件表示されましたが

next と back のonclickが動作してくれません。

html側でのonclickの際に何か別の方法はありますでしょうか?

すみません、試行錯誤しておりまして。

ご教授のほどお願いします。

2010/05/07 23:02:21
id:f-ikesan No.3

f-ikesan回答回数6ベストアンサー獲得回数22010/05/08 01:38:46ここでベストアンサー

ポイント26pt

外部jsファイルには、どのような記述をしてあるのでしょうか?

またnext と back が動作しないとはエラーが出ているのでしょうか?


一番始めに回答させていただいたコードのJavaScriptのコードのみを外部jsファイルに抜粋して

検証しましたが問題ありませんでした。


現在使用しているコードを掲載してくだされば、原因がすぐにわかるかと思います。


ダミー:http://www.google.co.jp/

id:xv1700

ありがとうございます。

ページング処理が可能になりました。

最後にひとつだけご教授いただきたいのですが

next と back を inputタグに変更しまして

初期表示でbackを非表示にnextをいれたときに表示などしていきたいのですが・・・

どのようにすればよろしいでしょうか?

2010/05/08 17:55:43
  • id:f-ikesan
    > next と back を inputタグに変更しまして
    > 初期表示でbackを非表示にnextをいれたときに表示などしていきたいのですが・・・
    > どのようにすればよろしいでしょうか?

    これでどうでしょうか?

    document.getElementById("test").style.display = "none";

    <span id="test">
    <input type="button" value="test">
    </span>

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません