Загрузка новых элементов при нажатии на копку “ещё”. Чистый JavaScript
Мне задали задание по практике. Я совсем голову сломал с заданием. Задание звучит так: "При нажатии на кнопку показать еще к существующему списку требуется дорисовать следующие 20 стран и т.д. При этом после того, как страны для вывода закончатся кнопку необходимо скрыть или удалить." Помогите, пожалуйста, сделать. Задание нужно сделать на чистом javascript.
|
posso,
где ваши попытки? |
let data async function getCountry(){ let val = document.getElementById('country').value; const response = await fetch(`https://api.sampleapis.com/countries/countries?name=${val}`); let data1 = await response.json(); let table = document.querySelector('#table'); data1.forEach((data2)=>{ table.innerHTML = ''; let tr = document.createElement('tr'); table.appendChild(tr); createCell(`<img src=${data2.media.flag} style = "width: 150px" alt="hello">`, tr); createCell(`${data2.capital}`, tr); createCell(`${data2.name}`, tr); createCell(`${data2.phone}`, tr); }) } async function getapi(n) { const response = await fetch("https://api.sampleapis.com/countries/countries"); data = await response.json(); if(data){ document.getElementById('spinner').style.display = 'none'; } let notesOnPage = 20 + n; let countOfItems = Math.ceil(data.length / notesOnPage); let table = document.querySelector('#table'); let pagination = document.querySelector('#pagination'); let showPage = (function() { let active; return function(item) { if (active) { active.classList.remove('active'); } active = item; item.classList.add('active'); let pageNum = +item.innerHTML; let start = (pageNum - 1) * notesOnPage; let end = start + notesOnPage; let notes = data.slice(start, end); table.innerHTML = ''; for (let note of notes) { let tr = document.createElement('tr'); table.appendChild(tr); createCell(`<img src=${note.media.flag} style = "width: 150px" alt="hello">`, tr); createCell(note.capital, tr); createCell(note.name, tr); createCell(note.phone, tr); } }; }()); let items = []; for (let i = 1; i <= countOfItems; i++) { let li = document.createElement('li'); li.innerHTML = i; pagination.appendChild(li); items.push(li); } showPage(items[0]); for (let item of items) { item.addEventListener('click', function() { showPage(this); }); } } function createCell(text, tr) { let td = document.createElement('td'); td.innerHTML = text; tr.appendChild(td); } |
кнопка ещё или вывод данных по запросу
Цитата:
<!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> ul{ width: 80vm; display: flex; flex-wrap: wrap; justify-content: flex-start; margin: 0 auto; } li { list-style: decimal; flex-basis: 120px; font-size: .8em; word-wrap: break-word; margin: 0 6px; } </style> </head> <body> <ul id="countries"></ul> <script> const baseURL = "https://api.sampleapis.com/countries/countries"; const makeСards = data => data.filter(obj => obj.media && obj.media.flag) .sort(({name : a},{name : b} ) => a > b ? 1 : a < b ? -1 : 0) .map(obj => `<li> <h3>${obj.name}</h3> <img src=${obj.media.flag} style = "width: 50px" alt="hello"> </li>`); const show = data => { let num = 0, delta = 20; const cards = makeСards(data); const button = document.createElement("button"); button.textContent = "add countries"; const add = _ => { countries.insertAdjacentHTML("beforeend", cards.slice(num, num += delta).join("")); num < cards.length || button.remove() } add(); button.addEventListener("click", add); countries.after(button) } fetch(`${baseURL}`) .then(resp => resp.json()) .then(show); </script> </body> </html> |
Часовой пояс GMT +3, время: 16:55. |