Build a Cash Register Project - Build a Cash Register

Tell us what’s happening:

Can someone please tell me what’s wrong? i pass all the tests except 15 and 19, been on this for at least 3 hours.

Your code so far

<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Conversions</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <input type="number" id="cash">
    <button type="button" id="purchase-btn">Purchase</button>
    <div id="change-due"></div>
    <script src="script.js"></script>
</body>
</html>
/* file: script.js */
let price = 3.26;
let drawerStatus = "";
    let inputInt = 0;
    let change = 0;
let changeArr = [0,0,0,0,0,0,0,0,0];
let cid =[["PENNY", 1.01], ["NICKEL", 2.05], ["DIME", 3.1], ["QUARTER", 4.25], ["ONE", 90], ["FIVE", 55], ["TEN", 20], ["TWENTY", 60], ["ONE HUNDRED", 100]];

const countCash = () => {
  let result = 0;
  for (let i = 0; i < cid.length; i++) {
    result += cid[i][1];
  }
  return result.toFixed(2);
}
const countChangeMade = () => {
  let result = 0.00;
  for (let i = 0; i < changeArr.length; i++) {
    result += changeArr[i];
  }
  return result.toFixed(2);
}

const input = document.getElementById("cash");
const button = document.getElementById("purchase-btn");
const out = document.getElementById("change-due")


const makeMsg = () => {
  // console.log(countCash(), 0)
  // console.log(countCash() <= 0)
  // console.log(inputInt === price.toFixed(2))
  let outStr = ""
 if(inputInt === price.toFixed(2)) {
  outStr = "No change due - customer paid with exact cash ";
} else if(countChangeMade() < change){
  outStr = "Status: INSUFFICIENT_FUNDS "
} else {
outStr = countCash() <= 0? "Status: CLOSED" : "Status: OPEN";
changeArr[8] > 0 ? outStr += ` ONE HUNDRED: $${changeArr[8]}`:false;
changeArr[7] > 0 ? outStr += ` TWENTY: $${changeArr[7]}`:false;
changeArr[6] > 0 ? outStr += ` TEN: $${changeArr[6]}`:false;
changeArr[5] > 0 ? outStr += ` FIVE: $${changeArr[5]}`:false;
changeArr[4] > 0 ? outStr += ` ONE: $${changeArr[4]}`:false;
changeArr[3] > 0 ? outStr += ` QUARTER: $${parseFloat(changeArr[3])}`:false;
changeArr[2] > 0 ? outStr += ` DIME: $${parseFloat(changeArr[2].toFixed(2))}`:false;
changeArr[1] > 0 ? outStr += ` DIME: $${parseFloat(changeArr[1].toFixed(2))}`:false;
changeArr[0] > 0 ? outStr += ` PENNY: $${parseFloat(changeArr[0].toFixed(2))}`:false;
}
// outStr += "</p>"
out.textContent = outStr;
}

const countChange = (number) => {
  number = number.toFixed(2)
  while(number > 0) {
    if(number >= 100 && cid[8][1]>=100){
      changeArr[8] += 100
      number -= 100;
      cid[8][1] -= 100;
      countChange(number);
    }else if(number >= 20 && cid[7][1]>=20){
      changeArr[7] += 20
      number -= 20;
      cid[7][1] -= 20
      countChange(number);
    }else if(number >= 10 && cid[6][1]>=10){
      changeArr[6] += 10
      number -= 10;
      cid[6][1] -= 10;
      countChange(number);
    }else if(number >= 5 && cid[5][1]>=5){
      changeArr[5] += 5
      number -= 5;
      cid[5][1] -=
      countChange(number);
    }else if(number >= 1 && cid[4][1]>=1){
      changeArr[4] += 1
      number -= 1;
      cid[4][1] -=
      countChange(number);
    }else if(number >= 0.25  && cid[3][1]>=0.25 ){
      changeArr[3] += 0.25
      number -= 0.25;
      cid[3][1] -= 0.25 
      countChange(number);
    }else if(number >= 0.1 && cid[2][1]>=0.1){
      changeArr[2] += 0.1
      number -= 0.1;
      cid[2][1] -= 0.1
      countChange(number);
    }else if(number >= 0.05 && cid[1][1]>=0.05){
      changeArr[1] += 0.05
      number -= 0.05;
      cid[1][1] -=0.05
      countChange(number);
    } else if(number >= 0.01 && cid[0][1] != 0){
      changeArr[0] +=  0.01 
      number -= 0.01;
        cid[0][1] -=0.01
        countChange(number);
    } 
    return
}

}

const checkUserInput = () => {
  inputInt = Number(input.value).toFixed(2);
  change = (inputInt- price.toFixed(2)).toFixed(2)
  // console.log("input: "+ inputInt + " price.toFixed(2): "+price.toFixed(2)+ " change: "+change)
  // console.log(inputInt === price.toFixed(2))
   if(inputInt < price) {
        alert("Customer does not have enough money to purchase the item");
      return;
    }
    countChange((inputInt) - price.toFixed(2));
    makeMsg();
    input.value = "";
    changeArr = [0,0,0,0,0,0,0,0,0]
  };

button.addEventListener("click", checkUserInput)

/* file: styles.css */

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36 OPR/118.0.0.0 (Edition Yx 05)

Challenge Information:

Build a Cash Register Project - Build a Cash Register

Well what output do the tests give you? Secondly how much change does your cash register give compared to the expected amount.





also, three of those that dont have case values seem to randomly turn checked and unchecked when i press the run the tests value after deleting or adding comments

Never mind, i just mashed the button and it worked

the last test uses different values each time, you may want to work on your app so that it can function for any value instead of failing sometimes