【问题标题】:How do I add up a number to a properties in my object?如何将数字添加到对象的属性中?
【发布时间】:2014-06-17 13:57:25
【问题描述】:

我有一个这样的对象:

var statistics = {
    won: 0,
    tie: 0,
    lost: 0
};

我有一个给won加1的函数:

var plus1 = function() {
    return statistics.won++;
}

我在 if/else 语句中调用该函数,如下所示:

plus1();

但它不起作用。有人有想法吗?

【问题讨论】:

  • statistics 在您尝试访问它时是否可见?您的浏览器控制台没有显示任何错误吗?
  • “它不起作用” - 为什么?有错误吗?
  • 浏览器控制台没有错误..
  • 那么,发生了什么?什么不起作用?
  • return ++statistics.won;?

标签: javascript function object add


【解决方案1】:

可能是 x++ 返回 x 而不是 x+1。 你正在寻找

var plus1 = function() {
    return ++statistics.won;
}

【讨论】:

  • 好吧@Andy,你应该把它作为答案而不是评论。
  • 公平地说:我之前没有看到你的评论。
  • 不幸的是,这仍然不起作用。问题出在其他地方。我的网站是:ivoklerk.com/rpslspro
  • 也许尝试在 plus1() 之后调用 wins()。
  • @J.Beyer:是的,这就是问题所在。
【解决方案2】:

查看您的代码,我真的看不出您有任何理由返回结果。

我会将函数重写为简单的

function plus1() {
  statistics.won++;
}

在更新时,我在您的代码中看不到您实际更新 html 的任何内容。在你运行 plus1() 之后。如果我在控制台中运行 console.log(statistics),我可以看到每当我获胜时 statistic.won 都会上升。

正如上面评论中已经提到的,如果你在运行 plus1() 之后运行 wins(),它会全部工作。

【讨论】:

  • wins();在 plus1() 下;在我的代码中..如何更新 html?
  • 无论何时运行 plus1();您需要再次运行 wins() 。所以把plus1();改成plus1(); wins();
  • 或者只是将wins(); 添加到plus1 函数中。
  • 如果您觉得问题已被回答,您可能希望将其标记为已回答。
【解决方案3】:

这是由于 JavaScript 中前/后增量的工作方式:

var one = 1;
var two = 1;

// increment `one` FIRST and THEN assign it to `three`.
var three = ++one; 

// assign `two` to `four`, THEN increment it
var four = two++;

因此,在您的代码中,您首先将 statistics.won 的值分配给 return 值,然后将其递增。 You can see the difference in how they work here.

所以,正如我在 cmets 中提到的,return ++statistics.won; 是您需要的解决方案。

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 2019-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2021-03-22
    • 2015-09-21
    相关资源
    最近更新 更多