Javascript 输入值变成无限循环(RPG战斗)

Javascript 输入值变成无限循环(RPG战斗),javascript,jquery,Javascript,Jquery,我想进行一场回合制战斗(RPG风格),直到我或对手的血量降到0,每回合通过表单输入一个数字 问题是,一旦加载index.js文件,我就得到了一个无限循环。我无法在表单中输入任何内容。我试图退出函数以从循环中获取值。我现在可以输入一个数字,但它在循环中不起作用。我尝试在函数()中定义所有代码的范围,并使用回调函数 代码如下: while((opponant.health>0)和&(player.health>0)){ $(“#按钮”)。单击(函数(){ attDef=$('#battleinpu

我想进行一场回合制战斗(RPG风格),直到我或对手的血量降到0,每回合通过表单输入一个数字

问题是,一旦加载index.js文件,我就得到了一个无限循环。我无法在表单中输入任何内容。我试图退出函数以从循环中获取值。我现在可以输入一个数字,但它在循环中不起作用。我尝试在函数()中定义所有代码的范围,并使用回调函数

代码如下:

while((opponant.health>0)和&(player.health>0)){
$(“#按钮”)。单击(函数(){
attDef=$('#battleinput').val();
控制台日志(attDef);
opponantAttDef=Math.floor(Math.random()*2)+1;
if(attDef==1&&opponantAttDef==1){
opponant.health=opponant.health-player.force;
player.health=player.health-opponant.strength;
$(“#战斗日志h3 ol”).append(“
    你攻击”+opponant.name+“+opponant.health+”剩余血量。
    “+opponant.name+”攻击你。你得到了“+player.health+”剩余血量
”; }else if(attDef==2&&opponantAttDef==1){ player.health=player.health-(opponant.strength/2); $(“#战斗日志h3 ol”).append(“
    你保护自己。
    ”+opponant.name+“攻击你。你得到了剩余的“+player.health+”
”); }else if(attDef==1&&opponantAttDef==2){ opponant.health=opponant.health-(player.strength/2); $(“#战斗日志h3 ol”)。附加(“
    你攻击“+opponant.name+”,但它会自我防御。你的伤害减半。你的敌人仍然有“+opponant.health+”生命。
”; }else if(attDef==2&&opponantAttDef==2){ $(“#战车h3 ol”)。追加(“
    你们都站在窗台上。什么都没发生…
”); }否则{ $(“#作战日志h3 ol”)。追加(“
    错误输入”
”); } }) }

Yataaaa!!!
你的战斗日志:

正如我在评论中所说:

while((opponant.health>0)和&(player.health>0))
在加载时为
true
,因此您的脚本在
上无限添加一个事件侦听器


事实上,您的
while
循环并不适合使用。您应该在点击按钮后检查演员的HP,然后在该功能中执行不同的过程

非常简单,将
while
语句替换为
if
条件,单击按钮时将检查该条件

在这种情况下,停止脚本的其余部分并删除事件侦听器

看看下面我做了什么。我允许自己在玩家或对手死亡时添加一个战斗日志(并且我纠正了许多细节,比如用
  • 替换

    //此块仅用于确保代码段正常工作。
    const Actor=函数(名称、hp、str){
    this.name=名称;
    这是健康=马力;
    这个强度=str;
    };
    康斯特对手=新演员(“对手”,10,2),
    玩家=新演员(“玩家”,10,2);
    //上面的代码块只是为了使代码段正确工作。
    $(“#按钮”)。单击(函数(){
    //当玩家死亡时:
    
    if(player.health
    while((opponant.health>0)和&(player.health>0))
    在加载时为
    true
    ,因此您的脚本在
    #battlebutton
    上无限添加一个事件侦听器。事实上,您的
    while
    循环不适合使用。您应该在单击按钮后检查演员的HP,然后在该功能中执行不同的过程。我尝试了,但没有成功。我尝试了一个功能在与参数的斗争中,我必须错过一些东西……没有任何东西会改变循环中while条件的值,因此Javascript除了循环中的内容(一个毫无意义的内容)之外,永远不会做任何事情。