
現在、サイトの一部ではこのようなつくりになっています。
--------------------------
<ul>
<li>最新の情報</li>
<li>2番目の情報</li>
<li>3番目の情報</li>
<li>4番目の情報</li>
・
・
・
<li>20番目の情報</li>
</ul>
--------------------------
これを、表示させるのを「最新の10件」のみにして、その下部に>>次の10件(<<前の10件)のようなリンクを自動生成する場合、どのような作りがスムーズでしょうか?(JQueryあたりで可能でしょうか)
No.2ベストアンサー
- 回答日時:
項目数がそう多くないのならば、スクリプトだけで表示を制御するのが、一番スムーズだと思います。
以下サンプルです。
<nav class=menu data-menu-pagesize=10>
<ul> <li> 1 <li> 2 <li> 3 <li> 4 <li> 5 <li> 6 <li> 7 <li> 8 <li> 9 <li> 10 <li> 11 ... </ul>
</nav>
<!-- HTML5 / 初期は最新10件のみ表示 / 必要なら前後リンクを自動生成 -->
<script>addEventListener('DOMContentLoaded',function(ev){_=0;
function A(a){return Array.prototype.slice.apply(a)}
function styleMenu(nav, delta) {
_ ; function makeAnchor(txt, cmd) {
_ , _ ; var e = document.createElement('a');
_ , _ ; e.textContent = txt;
_ , _ ; e.href = cmd;
_ , _ ; e.addEventListener('click', function clicker(ev) {
_ , _ , _ ; var cmd = ev.target.getAttribute('href'), nav = ev.target.parentNode;
_ , _ , _ ; if (cmd == '#menuPrev') ev.preventDefault(), styleMenu(nav, -1);
_ , _ , _ ; if (cmd == '#menuNext') ev.preventDefault(), styleMenu(nav, +1);
_ , _ ; }, false);
_ , _ ; return e;
_ ; }
_ ; var num = parseInt(nav.dataset.menuPagesize); if (!num) num = 10;
_ ; var index = delta + parseInt(nav.dataset.menuIndex); if (!index || index < 0) index = 0;
_ ; var items = A(nav.querySelectorAll('ul > li'));
_ ; var a = index * num, b = a + num, c = items.length;
_ ; items.forEach(function(li, i){ li.style.display = (a <= i && i < b)? 'list-item': 'none' });
_ ; A(nav.querySelectorAll('a')).forEach(function(e){e.parentNode.removeChild(e)});
_ ; if (0 < a) nav.appendChild( makeAnchor('前の'+num+'件', '#menuPrev') );
_ ; if (b < c) nav.appendChild( makeAnchor('次の'+num+'件', '#menuNext') );
_ ; nav.dataset.menuIndex = index;
}
A(document.querySelectorAll('nav.menu')).forEach(function(nav){styleMenu(nav, 0)});
},false)</script>
No.1
- 回答日時:
liのデータを全部読みこんでから表示したい部分だけ見せるのであればjavascriptで十分です
そうではなくサーバーからデータを取ってくるのも避けたいのであれば
phpなどなんらかのサーバーサイドのプログラムを利用することになります。
なお後者の方が無駄なデータのやり取りがなく効率的です。
また折衷案としてajaxで必要に応じて非同期でデータをとってくるのも
ユーザビリティが高くなります
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS リストの並べ替え 1 2022/09/13 15:27
- PHP アコーディオンPHPが上手くいかない 3 2022/07/15 16:29
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- HTML・CSS CSSが上手く反映されないみたいです 2 2022/11/21 16:19
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS display flex の使い方 1 2022/04/25 19:13
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS HTML & CSS 縦ボックス内の文字の左右センタリング 3 2023/03/25 04:23
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
html <ul></ul>の並びで一行空...
-
HTMLで組織図を作成する方法
-
html/cssの、navを2段にする...
-
なぜ?マウスオーバーで1pt位置...
-
サイズの違うフォントの下位置...
-
リンク文字同士の間隔を開ける...
-
テーブル内のプルダウンの下に...
-
複数行にまたがる括弧を表示し...
-
HTMLで語の先頭をそろえるには?
-
番号付きリスト(<Ol><Li>・・...
-
htmlの<ol>タグで、数字などを...
-
要素がランダムに並び替わりません
-
HTMLもしくはCSSのULでリンクを...
-
レスポンシブWebデザインでリン...
-
HTML CSS
-
リストマーカーをボックス内に...
-
親ページ側からインラインフレ...
-
HTML5のfooterに見出しを付けて...
-
css リストを右揃えにできませ...
-
ulタグやliタグの中でbrタグ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リストマーカーをボックス内に...
-
html/cssの、navを2段にする...
-
ulタグやliタグの中でbrタグ...
-
liタグの中に<p>タグやら<dl>を...
-
リストの数字のフォントサイズ...
-
画像にリンクを張ると画像がず...
-
複数行にまたがる括弧を表示し...
-
レスポンシブWebデザインでリン...
-
HTMLで組織図を作成する方法
-
html <ul></ul>の並びで一行空...
-
htmlの<ol>タグで、数字などを...
-
divタグ内のコンテンツが重なっ...
-
ページを開いているときのリン...
-
ドロップダウンメニューが隠れ...
-
【CSS】メニュー上部に固定させ...
-
<ul><li></li></ul>にするメリ...
-
番号付きリスト(<Ol><Li>・・...
-
ulとliで囲った文字の一部を変...
-
list-style-type部分だけ大きく...
-
<li>の中の<h>だから!ルール違...
おすすめ情報
ご回答有難うございます。
ちょうど、投稿前に色々と調べてjavascriptで最新の10件を表示させる所までは可能だったのですが
それだと残りの件数の情報が見られないので悩んでいました(ユーザーによっては全件見せたい場合あり)。
<li>タグが11件以上になった場合に限り「次の10件」または「全件表示させる」というリンクを要素の下部に生成させたいのですが、その際でもjavascriptのみで実現可能なものでしょうか?