0

我正在制作一款 2 名玩家互相战斗的游戏。

我将它设置在文档写入对象 hp out (100) 的位置。但是,当我制作一个玩家受到 10 点伤害的事件时,它应该在 hp 栏中写出 90。相反,它写出 10090。

我怎样才能在先前的值被更新的地方得到它,而不是继续写在先前的值旁边?

function player (hp, mana, stamina){
    this.hp = hp;
    this.mana = mana;
    this.stamina = stamina; 
    }

function npc (hp, mana, stamina) {
    this.hp = hp;
    this.mana = mana;
    this.stamina = stamina;
    }

var alistar = new player (100, 50, 30);
var dragon = new npc (100, 50, 30);

document.getElementById("hp").innerHTML += alistar.hp;

if ( 0 < 1) {
    alistar.hp = alistar.hp - 10;
    document.getElementById("hp").innerHTML += alistar.hp;
}

执行 = 符号有效,但它删除了我在其中的所有 HTML 单词。我想我可以为我的 HTML 需求制作第二个 div 框并保持值分开。

4

2 回答 2

0

只需放置=符号而不是+=

=运算符覆盖先前的值。另一方面,是算子和算子+=之间的联合,是实现下一个的“捷径”:+=

例如,如果你想给一个变量添加一个值,你可以这样做:

var a = 3,
    value = 10; /* Your value, i.e. 10 */

a = a + value; /* a values 13 */

但是,您可以使用+=运算符获得相同的结果:

var a = 3,
    value = 10; /* Your value, i.e. 10 */

a = += value; /* This adds the value of a to the value of value variable. */

如您所想,a 的值也是 13,如下例所示。


关于你的代码...

代码

if ( 0 < 1) {
    alistar.hp = alistar.hp - 10;
    document.getElementById("hp").innerHTML = alistar.hp; /* UPDATE */
}
于 2013-09-15T19:47:26.470 回答
0
if ( 0 < 1) {
alistar.hp = alistar.hp - 10;
document.getElementById("hp").innerHTML = alistar.hp;

}

+= 连接这些值并将它们加在一起(似乎是字符串格式)。相反,您想使用“=”将 hp 的值分配给 hp 元素,从而覆盖现有的 innerHTML。

于 2013-09-15T19:47:43.377 回答