0
votes

I'm a beginner and I just started out with Javascript. I'm supposed to write a grocery list, which has an input for name and price and shows the highest and lowest price. I've already been banging my head against the wall for 2 days and I feel so stupid.

From the basics that I've learnt so far, I could create an array where I push every price from input and either sort it or pick the lowest and highest figure. I'm able to do all this with console.log and show the results fairly easy, but with the combination of HTML and JS, I really get hopeless.

How do I get the lowest and highest value which gets updated when a new value overwrites the previous one?

function newElement() {
  var li = document.createElement("li");
  var inputValue = document.getElementById("myInput").value;
  var inputValue2 = document.getElementById("myPrice").value;
    var t = document.createTextNode(inputValue + " " + inputValue2 + "€");
  li.appendChild(t);
  
  if (inputValue === '') {
    alert("You must write something!");
  } else {
    document.getElementById("myUL").appendChild(li);    }
  }
  document.getElementById("myInput").value = "";
  document.getElementById("myPrice").value = "";
  
  var span = document.createElement("SPAN");
  var txt = document.createTextNode("\u00D7");
  span.className = "close";
  span.appendChild(txt);
  li.appendChild(span);

  for (i = 0; i < close.length; i++) {
    close[i].onclick = function() {
      var div = this.parentElement;
      div.style.display = "none";
    }
  }
* Include the padding and border in an element's total width and height */
* {
    box-sizing: border-box;
  }
  
  /* Remove margins and padding from the list */
  ul {
    margin: 0;
    padding: 0;
  }
  
  /* Style the list items */
  ul li {
    cursor: pointer;
    position: relative;
    padding: 12px 8px 12px 40px;
    background: #eee;
    font-size: 18px;
    transition: 0.2s;
  
    /* make the list items unselectable */
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
  }
  
  /* Set all odd list items to a different color (zebra-stripes) */
  ul li:nth-child(odd) {
    background: #f9f9f9;
  }
  
  /* Darker background-color on hover */
  ul li:hover {
    background: #ddd;
  }
  
  /* When clicked on, add a background color and strike out text */
  ul li.checked {
    background: #888;
    color: #fff;
    text-decoration: line-through;
  }
  
  /* Add a "checked" mark when clicked on */
  ul li.checked::before {
    content: '';
    position: absolute;
    border-color: #fff;
    border-style: solid;
    border-width: 0 2px 2px 0;
    top: 10px;
    left: 16px;
    transform: rotate(45deg);
    height: 15px;
    width: 7px;
  }
  
  /* Style the close button */
  .close {
    position: absolute;
    right: 0;
    top: 0;
    padding: 12px 16px 12px 16px;
  }
  
  .close:hover {
    background-color: #f44336;
    color: white;
  }
  
  /* Style the header */
  .header {
    background-color: #f44336;
    padding: 30px 40px;
    color: white;
    text-align: center;
  }
  
  /* Clear floats after the header */
  .header:after {
    content: "";
    display: table;
    clear: both;
  }
  
  /* Style the input */
  input {
    margin: 0;
    border: none;
    border-radius: 0;
    width: 37%;
    padding: 10px;
    float: left;
    font-size: 16px;
  }
  
  /* Style the "Add" button */
  .addBtn {
    padding: 10px;
    width: 25%;
    background: #d9d9d9;
    color: #555;
    float: left;
    text-align: center;
    font-size: 16px;
    cursor: pointer;
    transition: 0.3s;
    border-radius: 0;
  }
  
  .addBtn:hover {
    background-color: #bbb;
  }
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="styles.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.2/css/all.min.css">
    </head>
    <body>

<div id="myDIV" class="header">
    <h2>Assignment 1</h2>
    
    <input type="text" id="myInput" placeholder="Title..." autocomplete="off"><input type="number" id="myPrice" placeholder="Price..." autocomplete="off">
    <span onclick="newElement()" class="addBtn">Add</span>
  </div>

  <ul id="myUL">
  </ul>
    <br>

<script>

</script>
    Most expensive: <span id="priceHi"></span></br></h1>
    Cheapest: <span id="priceLo"></span></h1>
  
</body>
</html>
Please post your attempt and others will be more inclined to help. - Ryan Wilson
Your question is not clear enough. - Lion King