Tell us what’s happening:
i’ve tried everything but it keep failing the tasks where the price is not defined. in practice my code works fine. but still failing the same tests again and again. and after running the tests in the console it says [ReferenceError: _randomnumber not defined] although it is nowhere in my code. im stuck on this for so long. plz help
Your code so far
<!DOCTYPE html>
<html lang="en">
<head>
<title>Cash Register</title>
<link rel="stylesheet" href="./styles.css" />
</head>
<body>
<main>
<h1>Cash Register Project</h1>
<div id="counter">
<div id="change-due"></div>
<p id="bs">Enter cash from customer:</p>
<div id="cashed">
<input type="number" id="cash" class="user-input" value="" />
<button class="check-btn-styles" id="purchase-btn">Purchase</button>
</div>
</div>
<div id="box">
<div id="price-screen">
</div>
<div id="cid"></div>
</div>
</main>
<script src="./script.js"></script>
</body>
</html>
/* file: styles.css */
let price = 19.5;
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 change = document.getElementById('change-due');
const cash = document.getElementById('cash');
const sale = document.getElementById('purchase-btn');
const priceScreen = document.getElementById('price-screen');
const cashDrawerDisplay = document.getElementById('cid');
let currencyUnits = [
['PENNY', 0.01],
['NICKEL', 0.05],
['DIME', 0.1],
['QUARTER', 0.25],
['ONE', 1],
['FIVE', 5],
['TEN', 10],
['TWENTY', 20],
['ONE HUNDRED', 100]
];
sale.addEventListener("click",()=>{
const cashValue = parseFloat(cash.value);
const changeDue = cashValue - price;
if(cashValue<price){
alert("Customer does not have enough money to purchase the item");
return;
}
if(cashValue === price){
change.innerText = "No change due - customer paid with exact cash";
return;
}
const changeResult = getChange(changeDue, cid);
if(changeResult.status === "INSUFFICIENT_FUNDS"||changeResult.status === "CLOSED"){
change.innerText = `Status: ${changeResult.status} ${formatChange(changeResult.change)}`
} else{
let changeText = `Status: OPEN ${formatChange(changeResult.change)}`;
change.innerText = changeText;
}
})
const getChange = (changeDue,cid) => {
let totalCid = cid.reduce((sum, [_,amount])=>
sum + amount,0).toFixed(2);
if(totalCid < changeDue){
return {status:"INSUFFICIENT_FUNDS", change: [] }
}
let changeArray = [];
let remainingChange = changeDue
for(let i = currencyUnits.length-1 ; i>=0 ; i-- ){
let unit = currencyUnits[i][0];
let unitValue = currencyUnits[i][1];
let unitInDrawer = cid[i][1];
if(unitValue <= remainingChange && unitInDrawer > 0){
let amountFromUnit = 0;
while(remainingChange >= unitValue && unitInDrawer > 0){
remainingChange = (remainingChange - unitValue).toFixed(2);
unitInDrawer -= unitValue;
amountFromUnit += unitValue;
}
if(amountFromUnit > 0){
changeArray.push([unit,amountFromUnit])
}
}
}
if(remainingChange > 0){
return {status:"INSUFFICIENT_FUNDS", change: [] }
}
if(changeDue == totalCid){
return {status:"CLOSED", change: cid }
}
return {status:"OPEN", change: changeArray }
}
const formatChange = changeArray => changeArray.map(([unit,amount])=>`${unit}: $${amount.toFixed(2)}`).join(" ");
// console.log(formatChange([["PENNY", 0.01], ["NICKEL", 0], ["DIME", 0], ["QUARTER", 0], ["ONE", 0], ["FIVE", 0], ["TEN", 0], ["TWENTY", 0], ["ONE HUNDRED", 0]]))
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
Challenge Information:
Build a Cash Register Project - Build a Cash Register