現在、JavaScriptの練習でページネーションを作成しています。(jquery無し)
構成については、配列(items)からslice()によって5個ずつ要素を取り出し、得られた要素をそれぞれのページに表示するというものです。
しかし、関数(slice_array)を実行すると、新しい配列自体はできるのですが、要素がundefinedになってしまいます。
原因がわかる方がいましたら、教えていただきたいです。
以下コード
HTML
1<p class="title">Menu</p> 2 <ul id="page_count"></ul> 3 <ul id="contents"></ul> 4 <ul class="pagination"> 5 <li id="prev"><</li> 6 <li>1</li> 7 <li>2</li> 8 <li>3</li> 9 <li id="next">></li> 10 </ul>
css
1body { 2 font-size: 20px; 3 text-align: center; 4 margin: 0 auto; 5} 6 7.pagination { 8 display: flex; 9} 10 11li { 12 list-style: none; 13 margin-left: 5px; 14 margin: 0 auto; 15} 16 17.title { 18 font-size: 30px; 19}
js
1const items = [ 2 {"id": 1, "name": "サラダ油"}, 3 {"id": 2, "name": "オリーブオイル"}, 4 {"id": 3, "name": "酢"}, 5 {"id": 4, "name": "ごまドレ"}, 6 {"id": 5, "name": "鶏ガラ"}, 7 {"id": 6, "name": "小麦粉"}, 8 {"id": 7, "name": "ごま油"}, 9 {"id": 8, "name": "塩"}, 10 {"id": 9, "name": "胡椒"}, 11 {"id": 10, "name": "片栗粉"}, 12 {"id": 11, "name": "ショートケーキ"}, 13 {"id": 12, "name": "チーズケーキ"}, 14 {"id": 13, "name": "プリン"}, 15 {"id": 14, "name": "パフェ"}, 16 {"id": 15, "name": "アップルパイ"}, 17 {"id": 16, "name": "クッキー"}, 18 {"id": 17, "name": "チョコレートケーキ"}, 19 {"id": 18, "name": "フルーツ"}, 20 ]; 21 22 23 const pagination = () => { 24 const li = document.createElement('li'); 25 const page_count = document.getElementById('page_count'); 26 let current_page = 1; 27 const contents = 5; 28 const pages = Math.ceil(items.length/5); 29 30 page_count.appendChild(li).innerHTML = current_page + "/" + pages + " " + "page"; 31 32 const slice_array = (array, number) => { 33 const length = Math.ceil(array.length/number); 34 return new Array(length).fill().map((_, i) => { 35 array.slice(i * number, (i + 1) * number); 36 }); 37 } 38 39 slice_array(items, contents); 40 41 console.log(slice_array(items, contents)); //ここでundefinedになってしまいます。 42 43 } 44 45 window.onload = () => { 46 pagination(); 47 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/14 15:23