Stage 5


#1

It keeps saying that voidLastTransaction is not a function. Something is obviously wrong with my syntax, but I'm not sure what.

var cashRegister = {
total:0,
lastTransaction: 0,
//Dont forget to add your property
add: function(itemCost) {
this.total += itemCost;

    lastTransactionAmount = itemCost;
    console.log(lastTransactionAmount);
},

scan: function(item,quantity) {
    switch (item) {
    case "eggs": this.add(0.98 * quantity); break;
    case "milk": this.add(1.23 * quantity); break;
    case "magazine": this.add(4.99 * quantity); break;
    case "chocolate": this.add(0.45 * quantity); break;
    }
    return true;
},
//Add the voidLastTransaction Method here
voidLastTransaction: function () {
    this.total -= this.lastTransactionAmount;

}

};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',1);
cashRegister.scan('chocolate',4);

//Void the last transaction and then add 3 instead
cashRegister.voidLastTransaciton();
cashRegister.scan("chocolate", 3);

//Show the total bill
console.log('Your bill is '+cashRegister.total);


#2

var cashRegister = {
total:0,
lastTransaction: 0,
//Dont forget to add your property
add: function(itemCost) {
this.total += itemCost;

lastTransactionAmount = itemCost;
console.log(lastTransactionAmount);

},

scan: function(item,quantity) {
switch (item) {
case "eggs": this.add(0.98 * quantity); break;
case "milk": this.add(1.23 * quantity); break;
case "magazine": this.add(4.99 * quantity); break;
case "chocolate": this.add(0.45 * quantity); break;
}
return true;
},
//Add the voidLastTransaction Method here
voidLastTransaction: function () {
this.total -= this.lastTransactionAmount;

}
};

cashRegister.scan('eggs',1);
cashRegister.scan('milk',1);
cashRegister.scan('magazine',1);
cashRegister.scan('chocolate',4);

//Void the last transaction and then add 3 instead
cashRegister.voidLastTransaciton(); //CHECK SPELLING!!!!
cashRegister.scan("chocolate", 3);

//Show the total bill
console.log('Your bill is '+cashRegister.total);

Just check the spelling :grin:


#3

Lol, Thanks. I corrected the spelling, but now I'm getting the message that cashRegister.total is NaN. I've tried Number(), parseFloat() and parseInt(). Nothing seems to work. Has anyone else experienced this?


#4

Here:
//Add the voidLastTransaction Method here
voidLastTransaction: function () {
this.total -= this.lastTransactionAmount;
}

The last row should be:
this.total -= lastTransactionAmount;

or you can change:
lastTransactionAmount = itemCost; to this.lastTransactionAmount = itemCost;

Both ways should make it work.

You can also remove the: lastTransaction: 0
since you don't use it or need it.

Hope this helped!