2.3. Deleting a Key-Value Pair

For allowing the user to delete a key-value pair entry from the store, the user interface must provide a facility for choosing the entry to be dropped. For this purpose, HTML provides the select element, which is rendered as a selection field that can be expanded to a list of options to choose from.

The Delete user interface consists of a labeled selection field (named "key") and a Delete button.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta charset="UTF-8" />
 <title>Phone Number Directory</title>
</head>
<body>
 <h1>Phone Number Directory</h1>
 <h2>Delete an entry</h2>
 <form>
  <p><label>Name: <select name="key"></select></label></p>
  <p><button type="button" onclick="destroy()">Delete</button></p>
 </form>
 <hr/>
 <nav>...</nav>
 <script>...</script>
</body>
</html>

The following script element contains the JavaScript code for filling the selection list with option elements and the code of the destroy function, which deletes the selected key-value pair both from the localStorage store and from the selection list.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script>
 // get a handle for accessing the form element
 let formEl = document.forms[0];
 // get a handle for accessing the "key" selection field
 let selectEl = formEl.key;
 // fill selection list with options
 for (let key of Object.keys( localStorage)) {
   let optionEl = document.createElement("option");
   optionEl.text = key;
   selectEl.add( optionEl, null);
 }
 function destroy() {
   // delete from key-value store
   localStorage.removeItem( selectEl.value);
   // delete also from selection list
   selectEl.remove( selectEl.selectedIndex);
 }
</script>

Exercise: Copy and paste the HTML code into a fresh editor window. Don't forget to insert both the content of the nav element (from a code listing above) and the content of the script element. Save the resulting user interface page in your example folder as "delete.html". Then open the "delete.html" file in a browser. You should see a page containing a user interface as in Figure 2-2 below. Choose a name and click the Delete button. Then click on Home in the menu for checking if the chosen key-value pair has been deleted from the store.

Figure 2-2. The user interface of the key-value data management app for the operation Delete.