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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1040閲覧

100個ある配列を10個呼び出し、11個目からは無限スクロールで呼び出したい

seiya_web

総合スコア7

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

スクロール

スクロールとは、ディスプレイスクリーン上において連続的にコンテンツが滑っていくことを指します。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2020/05/25 18:00

前提・実現したいこと

使用言語:HTML,JS( jquery-2.2.3.min.js )

実現したいこと:

  1. htmlが読み込まれた時点で20個ある配列のうち10個(1~10)を呼び出す
  2. 10個目が画面に入ったら、次の10個(11~20)を呼び出す

※配列userDataは最大100個まで入る想定です

現状:
userDataの1個目から10個目までは呼び出せましたが、
10個目が画面に入ってから次の11個~20個を呼び出すことができません。
検索してもなかなか実現できず、方法をご教授いただきたいです。

js

1$(function(){ 2 var userData = [ 3 {id: 1,uId: 'userId1', name: '1aaa',}, 4 {id: 2,uId: 'userId2', name: '2aaa',}, 5 {id: 3,uId: 'userId3', name: '3aaa',}, 6 {id: 4,uId: 'userId4', name: '4aaa',}, 7 {id: 5,uId: 'userId5', name: '5aaa',}, 8 {id: 6,uId: 'userId6', name: '6aaa',}, 9 {id: 7,uId: 'userId7', name: '7aaa',}, 10 {id: 8,uId: 'userId8', name: '8aaa',}, 11 {id: 9,uId: 'userId9', name: '9aaa',}, 12 {id: 10,uId: 'userId10', name: '10aaa',}, 13 {id: 11,uId: 'userId11', name: '11aaa',}, 14 {id: 12,uId: 'userId12', name: '12aaa',}, 15 {id: 13,uId: 'userId13', name: '13aaa',}, 16 {id: 14,uId: 'userId14', name: '14aaa',}, 17 {id: 15,uId: 'userId15', name: '15aaa',}, 18 {id: 16,uId: 'userId16', name: '16aaa',}, 19 {id: 17,uId: 'userId17', name: '17aaa',}, 20 {id: 18,uId: 'userId18', name: '18aaa',}, 21 {id: 19,uId: 'userId19', name: '19aaa',}, 22 {id: 20,uId: 'userId20', name: '20aaa',}, 23 ]; 24 let ii = 0; 25 let userData = (function(){ 26 for(ii; ii < 10; ii++){ 27 if(userData[ii]){ 28 $('#userDataList').append( 29 '<div id="' + userData[ii].uId + '">'+ 30 '<p>'+ userData[ii].name +'</p>' + 31 '</div>' 32 ); 33 } 34 } 35}); 36userData(); 37});

html

1<body> 2<div id="userDataList"></div> 3<!-- ここで呼び出したいです --> 4</body>

試したこと

ソースコードは家は残っていないのですが最後に試したものは以下です。

userId10が画面に入る→userData()を実行し→10を*2へ (#userId20)→userId20が画面に入る→...

上記を試しに書いてみたのですが、次の10個が読み込めず。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

サンプル

js

1//... 2 let ii = 0; 3 let userData_ = (function(){ 4 const iii = ii + 10; 5 for(ii; ii < iii; ii++){ 6 if(userData[ii]){ 7 $('#userDataList').append( 8 '<div id="' + userData[ii].uId + '">'+ 9 '<p>'+ userData[ii].name +'</p>' + 10 '</div>' 11 ); 12 } 13 } 14}); 15userData_(); 16 let options = { 17 } 18 let callback = (entries, observer) => { 19 if (entries[0].isIntersecting) userData_(); 20 }; 21 let observer = new IntersectionObserver(callback, options); 22 var target = document.querySelector('#userId10'); 23 observer.observe(target); 24});

Intersection Observer API - Web API | MDN

投稿2020/05/26 02:22

編集2020/05/26 02:23
Lhankor_Mhy

総合スコア36960

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

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

seiya_web

2020/05/26 14:01

MDNありがとうございます! 読んだら考え方や仕組みが理解できました。 無事、10個づつ(最大100個)呼び込めました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問