我正在组建一个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框并保持值分开。
答案 0 :(得分: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,如下例所示。
关于你的代码...
<强> CODE 强>:
if ( 0 < 1) {
alistar.hp = alistar.hp - 10;
document.getElementById("hp").innerHTML = alistar.hp; /* UPDATE */
}
答案 1 :(得分:0)
if ( 0 < 1) {
alistar.hp = alistar.hp - 10;
document.getElementById("hp").innerHTML = alistar.hp;
}
+ =连接值并将它们加在一起(看似字符串格式)。相反,您希望使用“=”将hp的值分配给hp元素,覆盖现有的innerHTML。