循环JS函数,直到条件被满足为止

时间:2016-02-06 07:46:41

标签: javascript

我创建了一个函数,当使用某些参数调用时,它会播出,然后根据数学运算告诉玩家他们赢了或死了。我已经测试了该功能并且它正常工作,我在函数调用中设置参数,以便玩家获胜并显示获胜消息警报。但是如果我将怪物生命值增加到第一次调用该函数时玩家不会获胜的地方,那么当我尝试使用“else fight()”设置时,该函数将不会重复(如下所示)。

我的问题是,如何使用与之前相同的参数循环函数,直到else或者如果满足参数?

以HTML格式调用函数:

<a class="button" onclick="javascript:fight(8, 5, 1, 10, 3);">Test fight</a><br>

JS功能:

var playerHealth = 100;

function fight(monsterHealth, monsterDmg, monsterArmor, itemDmg, armorSts) {
 newPlayerHealth = playerHealth - monsterDmg / armorSts + 2;
 newMonsterHealth = monsterHealth - itemDmg / monsterArmor + 2;
 if (playerHealth <= 0) {
      alert('You died...');
 }
 else if (newMonsterHealth <= 0) {
      alert('You won!');
 }
 else
 {
 var newPlayerHealth =  playerHealth;
 fight(newMonsterHealth, monsterDmg, monsterArmor, itemDmg, armorSts);
 }
}

编辑:更新了功能,无论怪物的伤害或健康状况有多高,都说你赢了。

2 个答案:

答案 0 :(得分:1)

在你的代码order_name selected_fruit John Apple, Banana Matt Apple, Mango Jessica Apple, Banana, Mango 内部初始化了函数,它在递归调用中将玩家健康状况重置为100。

考虑递归调用,

playerHealth也没有被持久化。

newMonsterHealth

P.S。我删除了你的+2逻辑(我不明白你为什么要添加)

答案 1 :(得分:0)

你可能需要一个递归函数,它会在满足某些条件时结束。

这是一个例子:

&#13;
&#13;
function recursive(target, i) {
  target.innerHTML += '<br>' + i;

  console.log('index is', i);
  if(i > 100) {
    return target.innerHTML += '<br>' + 'END';
  }
    
  return recursive(target, ++i);
}

document.addEventListener('DOMContentLoaded', function() {
  recursive(document.getElementById('test'), 0)
});
&#13;
<h1 id="test"></h1>
&#13;
&#13;
&#13;