georgiev955

01. Sacry Story / JS Advanced Exam - 22 October 2022

Oct 4th, 2023
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve() {
  2.     const firstNameEl = document.querySelector('#first-name');
  3.     const lastNameEl = document.querySelector('#last-name');
  4.     const ageEl = document.querySelector('#age');
  5.     const titleEl = document.querySelector('#story-title');
  6.     const genreEl = document.querySelector('#genre');
  7.     const storyEl = document.querySelector('#story');
  8.     const publishButton = document.querySelector('#form-btn');
  9.     const previewUl = document.querySelector('#preview-list');
  10.     const mainDivEl = document.querySelector('#main');
  11.     publishButton.addEventListener('click', publish);
  12.  
  13.     function publish(e) {
  14.         e.preventDefault();
  15.  
  16.         const firstName = firstNameEl.value;
  17.         const lastName = lastNameEl.value;
  18.         const age = ageEl.value;
  19.         const title = titleEl.value;
  20.         const genre = genreEl.value;
  21.         const story = storyEl.value;
  22.  
  23.         if (!firstName || !lastName || !age || !title || !story) {
  24.             return;
  25.         }
  26.  
  27.         clearInputFields();
  28.         createAndAppendLi(firstName, lastName, age, title, genre, story);
  29.         document.querySelector('.edit-btn').addEventListener('click', editStoryInfo);
  30.         document.querySelector('.save-btn').addEventListener('click', saveStory);
  31.         document.querySelector('.delete-btn').addEventListener('click', deleteStory);
  32.     }
  33.  
  34.     function clearInputFields() {
  35.         firstNameEl.value = '';
  36.         lastNameEl.value = '';
  37.         ageEl.value = '';
  38.         titleEl.value = '';
  39.         genreEl.value = '';
  40.         storyEl.value = '';
  41.         publishButton.disabled = true;
  42.     }
  43.  
  44.     function createAndAppendLi(firstName, lastName, age, title, genre, story) {
  45.         const listElement = document.createElement('li');
  46.         listElement.classList.add('story-info');
  47.  
  48.         listElement.innerHTML = `
  49.         <article>
  50.         <h4>Name: ${firstName} ${lastName}</h4>
  51.         <p>Age: ${age}</p>
  52.         <p>Title: ${title}</p>
  53.         <p>Genre: ${genre}</p>
  54.         <p>${story}</p>
  55.         </article>
  56.         <button class="save-btn">Save Story</button>
  57.         <button class="edit-btn">Edit Story</button>
  58.         <button class="delete-btn">Delete Story</button>
  59.         `
  60.  
  61.         previewUl.appendChild(listElement);
  62.     }
  63.  
  64.     function editStoryInfo(e) {
  65.         const liElement = e.target.parentElement;
  66.         const articleElements = Array.from(e.target.parentElement.children[0].children);
  67.  
  68.         firstNameEl.value = articleElements[0].textContent.split(' ')[1];
  69.         lastNameEl.value = articleElements[0].textContent.split(' ')[2];
  70.         ageEl.value = articleElements[1].textContent.split(' ')[1];
  71.         titleEl.value = articleElements[2].textContent.split(' ')[1];
  72.         genreEl.value = articleElements[3].textContent.split(' ')[1];
  73.         storyEl.value = articleElements[4].textContent;
  74.  
  75.         liElement.remove();
  76.         publishButton.disabled = false;
  77.     }
  78.  
  79.     function saveStory(e) {
  80.         mainDivEl.innerHTML = '';
  81.         const h1El = document.createElement('h1');
  82.         h1El.textContent = "Your scary story is saved!";
  83.         mainDivEl.appendChild(h1El);
  84.     }
  85.  
  86.     function deleteStory(e) {
  87.         const liElement = e.target.parentElement;
  88.         liElement.remove();
  89.         publishButton.disabled = false;
  90.     }
  91. }
Advertisement
Add Comment
Please, Sign In to add comment