【问题标题】:javaScript: coffee machine simulator, problem with methods and collecting valuesjavaScript:咖啡机模拟器,方法和收集值的问题
【发布时间】:2021-05-17 05:58:33
【问题描述】:

我要制作这个模拟 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 和 addWath 的总和,还是我遗漏了其他东西?

第二种方法需要排空水,检查水的当前状态是否大于我们转发器提示的值。 我有这个:

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;
                },

【问题讨论】:

    标签: javascript object methods javascript-objects


    【解决方案1】:

    检查新的总值,因此条件将起作用:

    ....
    } else if (this.water + Number(addWater) < 400) {
      addWater = Number(addWater);
      this.water += addWater;
    ...
    

    更新

    我认为你应该将emptyWater函数中的参数water改为addWater

    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;
    },
    

    【讨论】:

    • 是的!第一个功能现在可以工作了,谢谢!我还在弄清楚参数一。因为如果我按照你的方式编写它,它会说它是未定义的,所以它仍然困扰着我。
    • 在您的emptyWater 函数中,addWater 变量来自哪里?
    • 我用定义 this.water 的第一种方法更新了问题。是的,也不确定,我搞砸了那部分,因为我应该检查水的当前状态是否大于我们转发器提示的值,以及是否从当前减去附加值。
    • 您在哪里/如何调用emptyWater 函数?
    • 是的!这解决了很多!我还有一些方法要完成,但有了它的帮助,这应该不是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 2017-03-24
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多