質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

566閲覧

JSONデータを取得し、一覧に表示させ,指定の数要素を超えるとページャーで画面を切り替えたい

Rocky12345

総合スコア3

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/07/19 08:56

編集2021/07/19 09:07

JSONデータを取得し、一覧に表示させ,指定の数要素を超えるとページャーで画面を切り替えたいです。

ここに質問の内容を詳しく書いてください。
6個以上要素がある場合、ページャーで画面を切り替え、次のページにいけるようにしたいです。
URLは変更せず、切り替えるイメージです。

現状ページネーションは動いていますが、ページが最初に表示しているものから変わらない状況です。

お忙しいなかではありますが、どうぞよろしくお願い致します。

発生している問題・エラーメッセージ

エラーはでていませんが、
liTag += <li class="num" onClick="creatPager(${totalPages}, ${totalPages})"><span>${totalPages}</span></li>;

ここの部分が怪しいのかなと思っています。

該当のソースコード

//listを囲むul const companiesList = document.getElementById("menu_list"); //検索のボタン const searchButton = document.querySelector(".searchButton"); //検索窓 const searchBar = document.getElementById("searchBar"); //リストを格納する配列 let companies = []; //1ページに表示させる件数 let perPage = 6; //ページャの要素酒盗 const pagination = document.querySelector(".pagination"); //JSONデータの取得・加工 const loadList = async () => { try { const res = await fetch("./companies.json"); companies = await res.json(); showPaginationPage(companies); console.log(companies.length); } catch (err) { console.log(err); } }; //企業のリストの要素 を生成・表示 const displayCompany = (companies) => { const listElement = companies .map((company) => { return ` <li class="list"> <div class="supportersListImg"><img alt=""></div> <div class="supportersListInfo"> <h3 class="supportersName">${company.name}</h3> <p class="supportersTxt">${company.detail}</p> </div> </li> `; }) .join(""); companiesList.innerHTML = listElement; }; //ページャーの生成 function creatPager(totalPages, page) { let activeLi; let liTag = ""; let beforePages = page - 1; let afterPages = page + 1; for (let pageLength = beforePages; pageLength <= afterPages; pageLength++) { if (pageLength > totalPages) { continue; } if (pageLength == 0) { pageLength = pageLength + 1; } if (page === pageLength) { activeLi = "active"; } else { activeLi = ""; } liTag += `<li class="num ${activeLi}" onClick="creatPager(${totalPages}, ${pageLength})"><span>${pageLength}</span></li>`; } if (page < totalPages - 1) { if (page < totalPages - 2) { liTag += `<li class="dots"><span>...</span></li>`; } liTag += `<li class="num" onClick="creatPager(${totalPages}, ${totalPages})"><span>${totalPages}</span></li>`; } pagination.innerHTML = liTag; } //1ページ分表示 const showPaginationPage = (companiesData) => { let totalPages = Math.ceil(companiesData.length / perPage); console.log(totalPages); //1ページに表示させる分 const displayItems = (page = 1, perPage) => { let index, offSet; if (page == 1 || page <= 0) { index = 0; offSet = perPage; } else if (page > companiesData.length) { index = page - 1; offSet = companiesData.length; } else { index = page * perPage - perPage; offSet = index + perPage; } // 加工 const slicedItems = companiesData.slice(index, offSet); console.log(slicedItems); displayCompany(slicedItems); }; creatPager(totalPages, 1); displayItems(1, perPage); }; //検索の実装 searchButton.addEventListener("click", function () { const searchString = searchBar.value.toLowerCase(); const filteredCompany = companies.filter((company) => { return company.name.toLowerCase().includes(searchString) || company.detail.toLowerCase().includes(searchString) || company.kana.includes(searchString); }); showPaginationPage(filteredCompany); const kensuu = document.querySelector(".show"); kensuu.innerText = `検索結果${filteredCompany.length}件です`; if (filteredCompany.length === 0) { alert("ありません"); } }); loadList();

補足情報(FW/ツールのバージョンなど)

素のJavascriptのみ

ここにより詳細な情報を記載してください。

お忙しいなかではありますが、どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Lhankor_Mhy

2021/07/21 09:12

ざっとしか見てないのでここに書きますが、 onClick="creatPager(${totalPages}, ${pageLength})" これはこれで大丈夫ですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問