我要制作这个模拟 JavaScript 咖啡机,但我遇到了两种方法的问题,其中一种是加水(例如咖啡),另一种是空的。 这是我用第一种方法得到的:
let coffeeMachine = {
water: 400,
coffee: 10,
milk: 100,
credit: 100,
waterStatus: function () {
document.getElementById('water-status').innerText = this.water;
},
addWater: function () {
let addWater = prompt('Unesite kolicinu vode koju zelite da dodate');
if (addWater === null || addWater.trim().length === 0) {
alert('Morate uneti koliko vode zelite');
return;
} else if (isNaN(addWater) || addWater.startsWith('-') || addWater % 1 !== 0) {
alert('Unos mora biti pozitivna brojcana vrednost');
return;
} else if (this.water < 400) {
addWater = Number(addWater);
this.water += addWater;
} else {
alert('Maksimalan unos vode je 400');
return;
}
this.waterStatus();
},
这个的问题是总值不能大于400,并且只有当我第一次输入大于400的值时才有效(弹出警报),但是如果添加100,并且大于500,它就会写入它(600),不考虑条件。 是不是我没有创建新变量来收集 this.water 和 addWather 的总和,或者我遗漏了其他内容?
第二种方法需要清空水并检查当前水的状态是否大于我们转发提示的值。 我有这个:
emptyWater: function (water) {
if (this.water > addWater) {
this.water -= addWater;
this.waterStatus(water);
document.getElementById('message').innerText = 'Pouring water';
} else {
document.getElementById('message').innerText = 'Machine is out of water \n';
}
},
在对象本身中,我预定义了水、咖啡等值。
我在水状态函数中收集的那些值,但我没有使其动态化吗?
waterStatus: function () {
document.getElementById('water-status').innerText = this.water;
},
检查新的总值,因此条件将起作用:
....
} else if (this.water + Number(addWater) < 400) {
addWater = Number(addWater);
this.water += addWater;
...
更新
我认为你应该将
water
函数中的参数addWater
更改为emptyWater
:
emptyWater: function (addWater) {
if (this.water > addWater) {
this.water -= addWater;
this.waterStatus();
...
您可以在
addWater
函数中使用它,如:
...
} else if (this.water < 400) {
addWater = Number(addWater);
this.water += addWater;
this.emptyWater(addWater);
...
waterStatus
是:
waterStatus: function () {
document.getElementById('water-status').innerText = this.water;
},
我现在正在做同样的任务咖啡机模拟器,我似乎不明白它出了什么问题。如果您仍然拥有它,您是否可以将您完成的代码发送给我,以便我可以比较它并查看我所犯的错误。 这将非常有帮助,谢谢! 请随时通过 [电子邮件受保护]
与我联系