I'm trying to achieve the following:
- Initial view is a simple definition list
- Clicking on the Edit button converts to input fields and shows Save and Cancel buttons
- Clicking the Save button will
- save to local storage and
- display as original with updated information
- and cancel will revert back to point 1 (initial view)
- Save to localStorage
I've managed to get achieve points 1 & 2 and can't figure out 3 & 4
I've created Codepen here https://codepen.io/saidcc/pen/JjrZegb
<div class="container mx-auto my-4" id="accountDetail">
  <dl>
    <dt>Website</dt>
    <dd id="website">www.some-website.com</dd>
    <dt>Email</dt>
    <dd id="email">contact@4some-website.com</dd>
    <dt>Phone</dt>
    <dd id="phone">999 999 999</dd>
  </dl>
  <dl>
    <dt>Site Address</dt>
    <dd id="siteAddress">
      123 Address Parade<br>
      City State, 0000<br>
      Country
    </dd>
    <dt>Postal Address</dt>
    <dd id="postalAddress">
      345 Address Esplanade<br>
      City State, 0000<br>
      Country
    </dd>
  </dl>
  <button class="account-details edit btn btn-primary">Edit</button>
  <button class="account-details save btn btn-primary d-none">Save</button>
  <button class="account-details cancel btn btn-outline-primary d-none" type="reset">Cancel</button>
</div>
const editAccountDetails = document.querySelector(".edit")
  const saveAccountDetails = document.querySelector(".save")
  const cancelButton = document.querySelector(".cancel")
  const editableItems = document.querySelectorAll("#accountDetail dd")
  const updatedItems = document.querySelectorAll("#accountDetail .form-control")
  // Show hide save & cancel buttons
  // Get Details to Edit
  // Edit Account Details convert to input tag
  editAccountDetails.addEventListener("click", () => {
    if (editAccountDetails.classList.contains("edit")) {
      editAccountDetails.classList.add('d-none')
      saveAccountDetails.classList.remove('d-none')
      cancelButton.classList.remove('d-none')
    }
    else {
      editAccountDetails.textContent = "Edit Account Details";
    }
    for (let i = 0; i < editableItems.length; i++) {
      let fieldID = editableItems[i].getAttribute('id')
      let fieldValue = editableItems[i].textContent.replace(/ +/g, " ")
      editableItems[i].innerHTML = `
    <input class="form-control" type="text" id="edit-${fieldID}" value="${fieldValue}">
    `
    }
  })
  // Save Account Details & Revert to Original Formating
  saveAccountDetails.addEventListener("click", () => {
    if (saveAccountDetails.classList.contains("save")) {
      saveAccountDetails.classList.add('d-none')
      editAccountDetails.classList.remove('d-none')
      cancelButton.classList.add('d-none')
    } else {
      saveAccountDetails.textContent = "Save";
    }
    
    for (let i = 0; i < updatedItems.length; i++) {
      let updatedValue = updatedItems[i].value
      updatedItems[i].innerHTML = `
      <dd>${updatedValue}</dd>
        `
    }
  })
 
    