как я могу создавать страницы, каждая из которых содержит 10 сообщений?

#javascript #html #css

#javascript #HTML #css

Вопрос:

У меня есть 100 сообщений с помощью Fetch API, все они у меня на одной странице. Я понятия не имею, как я могу создавать страницы, где на каждой странице я могу отображать только 10 сообщений.

Это мой код javascript:

       fetch('https://jsonplaceholder.typicode.com/posts')
       .then((res)=>res.json())
       .then((data)=>{
       let output = '<h2 class="posts"></h2>';
       let i=0;
       data.forEach(function(thePost){
        output  = `
         <div style="background-color: gray;margin- 
       right:60px;width:300px;height:350px;border-radius: 30px;display: 
       inline-block;overflow: hidden;"  class="post" id=item${i}>
          <h3 style="padding:10px;color:white;">${thePost.title}</h3>
          <p style="padding:10px;color:white;">${thePost.body}</p>
        </div>
      `;
      i  ;
      //if (i==3){`<br> <br>`}
    });
    document.getElementById('posts').innerHTML=output;

});
  

Это записи div:div posts

Ответ №1:

Есть много способов добиться этого.

Способ 1

Вы можете объединить массив и получить только первые 10 элементов с помощью splice метода

 data = data.splice(0, 10);
  

Полный код

 fetch('https://jsonplaceholder.typicode.com/posts')
       .then((res)=>res.json())
       .then((data)=>{
       let output = '<h2 class="posts"></h2>';
       let i=0;
       data = data.splice(0, 10);
       data.forEach(function(thePost){
        output  = `
         <div style="background-color: gray;margin- 
       right:60px;width:300px;height:350px;border-radius: 30px;display: 
       inline-block;overflow: hidden;"  class="post" id=item${i}>
          <h3 style="padding:10px;color:white;">${thePost.title}</h3>
          <p style="padding:10px;color:white;">${thePost.body}</p>
        </div>
      `;
      i  ;
      //if (i==3){`<br> <br>`}
    });
    document.getElementById('posts').innerHTML=output;

});
  

Способ 2 :

Вы можете использовать разбивку на страницы, предоставляемую jsonplaceholder, которая позволяет вам получать только n записи в данный момент page .

для этого вы можете добавить некоторые параметры строки запроса к вашему запросу следующим образом :

 https://jsonplaceholder.typicode.com/posts?_page=0amp;_limit=10
  

Полный код

 fetch('https://jsonplaceholder.typicode.com/posts?_page=0amp;_limit=10')
       .then((res)=>res.json())
       .then((data)=>{
       let output = '<h2 class="posts"></h2>';
       let i=0;
       data.forEach(function(thePost){
        output  = `
         <div style="background-color: gray;margin- 
       right:60px;width:300px;height:350px;border-radius: 30px;display: 
       inline-block;overflow: hidden;"  class="post" id=item${i}>
          <h3 style="padding:10px;color:white;">${thePost.title}</h3>
          <p style="padding:10px;color:white;">${thePost.body}</p>
        </div>
      `;
      i  ;
      //if (i==3){`<br> <br>`}
    });
    document.getElementById('posts').innerHTML=output;

});
  

Комментарии:

1. Спасибо, за первый способ, я не хочу просто получать 10 сообщений с помощью выборки, я хочу получить их все (100 сообщений), но размещая их по 10 на странице;

2. первый подход не подходит?

3. с помощью этого кода я просто получу 10 сообщений из API; но я хочу получить все сообщения, а затем разместить каждые 10 сообщений на странице. есть предложения?

4. вы можете хранить все записи в массиве, затем делать снимки с помощью метода и отображать их

5. как я могу сделать это с разбиением на страницы?