Advertisement
Liliana797979

accordion - js apllications

Nov 5th, 2021
1,066
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. async function solution() {
  2.     let main = document.querySelector('#main');
  3.  
  4.     let articles = await getArticles();
  5.     articles.map(createElements).forEach(e => main.appendChild(e));
  6. }
  7.  
  8. function createElements(article){
  9.     let divEl = document.createElement('div');
  10.     divEl.className = 'accordion'
  11.  
  12.     let divEl2 = document.createElement('div');
  13.     divEl2.className = 'head';
  14.     let spanEl = document.createElement('span');
  15.     spanEl.textContent = article.title;
  16.  
  17.     let btn = document.createElement('btn');
  18.     btn.className = 'button';
  19.     btn.id = article._id;
  20.     btn.textContent = 'MORE';
  21.     divEl2.appendChild(spanEl);
  22.     divEl2.appendChild(btn)
  23.  
  24.     divEl.appendChild(divEl2);
  25.     btn.addEventListener('click', () => toggleElements(article._id, divEl));
  26.  
  27.     return divEl;
  28. }
  29.  
  30.  
  31. async function toggleElements(id, preview){
  32.     let article = await getMoreInfo(id);
  33.     //let divEl3 = document.createElement('div');
  34.     //divEl3.className = 'extra';
  35.     let p = document.createElement('p');
  36.     p.textContent = article.content;
  37.  
  38.    
  39.  
  40.     if(preview.querySelector('.button').textContent == 'MORE'){
  41.         preview.appendChild(p);
  42.         preview.querySelector('.button').textContent = 'LESS';
  43.     }else{
  44.         preview.querySelector('p').remove();
  45.         preview.querySelector('.button').textContent = 'MORE'
  46.  
  47.     }
  48. }
  49.  
  50. async function getArticles(){
  51.     let url = 'http://localhost:3030/jsonstore/advanced/articles/list';
  52.  
  53.     let res = await fetch(url);
  54.     let data = await res.json();
  55.  
  56.     return Object.values(data);
  57. }
  58.  
  59. async function getMoreInfo(id){
  60.     let url = 'http://localhost:3030/jsonstore/advanced/articles/details/' + id;
  61.  
  62.     let res = await fetch(url);
  63.     let data = await res.json();
  64.     return data;
  65. }
  66.  
  67.  
  68. window.addEventListener('load', () => {
  69.     solution();
  70. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement