我似乎无法从另一个变量中减去一个变量

时间:2011-11-03 00:34:15

标签: javascript subtraction

我正在开发一个简单的游戏,我已经编码了,所以当你点击一个攻击按钮时,它应该根据一个基础和力量生成一个随机数,然后从敌人的健康中减去它减法部分似乎不起作用。它始终输出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>

它可能与没有特别确保它们是整数但我不确定如何做到有关。

3 个答案:

答案 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;

首先,enemyHealthundefined范围内定义为hitEnemy *。现在,存在名为enemyHealth两个变量,但内部变量“遮蔽”外部变量,因此无法引用外部变量。因此,从attack中减去undefined,生成NaN

*这听起来毫无意义,我知道