Solving It

Add items to local storage

searchForm.addEventListener('submit', () => {
  const searches = getRecentSearches();
  const searchString = searchBar.value;

  searches.push(searchString) 
  // Set local storage item
  localStorage.setItem('recentSearches', searches);
  createItem(searchString);
});

Remember, the value assigned to searches is an array, and local storage can only store string types. This presents a minor challenge. The way we will work around this is to store all of our data as stringified JSON, using the JSON.stringify() method: localStorage.setItem('recentSearches', JSON.stringify(searches));

Get local storage items

function getRecentSearches() {
  const searches = localStorage.getItem('recentSearches');
  if (searches) {
    return JSON.parse(searches);
  }
  return [];
}

Remove local storage items

clearButton.addEventListener('click', () => {
  localStorage.removeItem('recentSearches');
  recentSearchList.innerHTML = '';
});

Example Files

index.html

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  <title>Search Bar Demo</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="css/styles.css" />
  <link href='https://fonts.googleapis.com/css?family=Bitter:400,700' rel='stylesheet' type='text/css'>
</head>
<body>

  <div class="header">
    <h1 class="header-title">Search</h1>
    <form autocomplete="off" id="searchForm">
      <input class="text-input" type="text" id="searchBar">
      <button class="button" type="submit">Search</button>
    </form>
  </div>

  <div class="recent">
    <h2 class="recent-title">Recent Searches</h2>
    <button class="button" type="button" id="clearStorage">Clear Storage</button>
    <ul class="recent-list" id="recentSearchList"></ul>
  </div>

  <script src="app.js">
  </script>
</body>
</html>

app.js completed program

const searchForm = document.getElementById('searchForm');
const searchBar = document.getElementById('searchBar');
const clearButton = document.getElementById('clearStorage');

// Initialize display list
createStorageList();

// Retrieve searches from Local Storage, return an array
function getRecentSearches() {
  const searches = localStorage.getItem('recentSearches');
  if (searches) {
    return JSON.parse(searches);
  }
  return [];
}

// Create a list item
function createItem(item) {
  const recentSearchList = document.getElementById('recentSearchList');
  recentSearchList.insertAdjacentHTML('afterbegin', `<li>${item}</li>`);
}

// Create initial list from items in local storage 
function createStorageList() {
  const searchList = getRecentSearches();
  searchList.forEach(searchItem => {
   createItem(searchItem);
  });
}

// Set event handlers
searchForm.addEventListener('submit', () => {
  const searches = getRecentSearches();
  const searchString = searchBar.value;

  searches.push(searchString) 
  localStorage.setItem('recentSearches', JSON.stringify(searches));
  createItem(searchString);
});

clearButton.addEventListener('click', () => {
  localStorage.removeItem('recentSearches');
  recentSearchList.innerHTML = '';
});