我正在开发一个简单的游戏,我已经编码了,所以当你点击一个攻击按钮时,它应该根据一个基础和力量生成一个随机数,然后从敌人的健康中减去它减法部分似乎不起作用。它始终输出NaN
。
<head>
<script>
var playerHealth=100;
var enemyHealth=100;
var strength=10;
function begin(){
document.getElementById('playerhealth').innerHTML = playerHealth;
document.getElementById('enemyhealth').innerHTML = enemyHealth;
}
function hitEnemy(){
var attack=Math.floor(Math.random()*20 + strength);
var enemyHealth = enemyHealth - attack;
document.getElementById('damage').innerHTML = attack;
document.getElementById('enemyhealth').innerHTML = enemyHealth;
}
</script>
</head>
<body onload="begin()">
<input type="button" name="doit" id="doit" value="Attack!" onclick="hitEnemy();">
<br /><span>playerhealth</span>
<div style="font-size:3em;" id="playerhealth"></div>
<span>enemyhealth</span>
<div style="font-size:3em;" id="enemyhealth"></div>
<br />
<span>You Did:</span><span style="font-size:3em;" id="damage"></span><span>damage</span>
</body>
它可能与没有特别确保它们是整数但我不确定如何做到有关。
答案 0 :(得分:3)
这是最直接的问题。您需要从var
内的enemyHealth
声明中删除hitEnemy
。这将创建一个名为enemyHealth
的新变量intsead,用于修改第一个变量。
enemyHealth = enemyHealth - parseFloat(attack);
此外,您应该在每次begin
通话结束时致电hitEnemy
以更新分数。这是代码的工作版本
答案 1 :(得分:3)
因为你在hitEnemy函数里面重新定义了enemyHealth var。删除var以修复它。
function hitEnemy(){
var attack=Math.floor(Math.random()*20 + strength);
enemyHealth = enemyHealth - attack;
document.getElementById('damage').innerHTML = attack;
document.getElementById('enemyhealth').innerHTML = enemyHealth;
}
答案 2 :(得分:0)
添加Jared的回复......
var enemyHealth = enemyHealth - attack;
是......的简写。
var enemyHealth;
enemyHealth = enemyHealth - attack;
首先,enemyHealth
在undefined
范围内定义为hitEnemy
*。现在,存在名为enemyHealth
的两个变量,但内部变量“遮蔽”外部变量,因此无法引用外部变量。因此,从attack
中减去undefined
,生成NaN
。
*这听起来毫无意义,我知道