I don't know why the if-else statement given in the question is function incorrectly. Even cashProvided.value >billAmount.value I keep getting the errorMsg which is being executed in the else statement. I tried using console.log() at different parts of my code to see where I'm going wrong but I am not quite able to figure it out myself.Any suggestion?
const billAmount=document.querySelector("#bill-amount");
const cashProvided=document.querySelector("#cash-given");
const checkButton=document.querySelector("#Check");
const numberOfNotes=document.querySelectorAll(".no-of-notes");
const errorMsg=document.querySelector("#error-msg");
checkButton.addEventListener("click",clickHandler);
notes=[2000,500,100,20,10,5,1];
if(cashProvided.value >= billAmount.value)
{
console.log("inside if");
console.log('Bill='+billAmount.value);
console.log("Cash Provided="+cashProvided.value);
var change=cashProvided.value-billAmount.value;
console.log("Change="+change)
for(i=0;i<notes.length;i++)
{
console.log(notes.length);
console.log("entered for");
var numOfNotes=Math.trunc(change/notes[i]);
numberOfNotes[i].innerText=numOfNotes;
change%=notes[i];
console.log("new change "+change);
}
}
else
{
console.log(billAmount.value);
console.log(cashProvided.value);
errorMsg.style.display="block";
errorMsg.innerText="You want to wash plates or what? Gimme atleast "+billAmount.value;
}
Values are coming as string. you should parse the value first.
second way:
if(parseInt(cashProvided.value, 10) >= parseInt(billAmount.value, 10))
also you can set them as variables outside of the if statement.
Edit: in response for peter's comment. you should include a second argument intuo parseInt function. it will determine the base. i assume you are using 10 base.
The type of input's value is String, you need to parse it to integer or number first.
const cash = parseInt(cashProvided.value);
const bill = parseInt(billAmount.value);
//use cash and bill instead of cashProvided.value, billAmount.value
...