-1

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?enter image description here

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;
        }
3
  • have you tried to parse the values into integers JavaScript is weird with numbers and strings Commented May 26, 2022 at 8:30
  • maybe you didn't "catch" the element with queryselector and thus have undefined in the if. Check the values with console log before the if (values for cashProvided and billAmount) Commented May 26, 2022 at 8:34
  • add a console.log(cashProvided.value - billAmount.value) before if statement. And see what prints in the console. Commented May 26, 2022 at 8:34

2 Answers 2

2

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.

Sign up to request clarification or add additional context in comments.

Comments

-1

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
...

2 Comments

The downvote is for having omitted the 2nd parameter of parseInt which is a cause for many wrong calculations.
Thank you @PeterSeliger, i edited my answer. according to your suggestion.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.