Javascript 重置函数,将字段重置为基于上次运行的两个函数中的哪一个的值

Javascript 重置函数,将字段重置为基于上次运行的两个函数中的哪一个的值,javascript,Javascript,我正在制作一个简单的浏览器游戏来练习JS,在这里你可以杀死一个坏人。有两种模式,简单和困难。我正在尝试设置一个重置按钮,该按钮将根据游戏所处的模式重置信息字段 范例 轻松玩,点击重置,游戏通过运行easyMode功能重置 玩硬,点击重置,游戏通过运行硬模式功能重置 抱歉,如果这很简单,这就是我为什么要做练习游戏的原因 我尝试在运行重置函数时运行当前选择了特定类的函数 var resetButton = document.querySelector("#new"); var easy = docu

我正在制作一个简单的浏览器游戏来练习JS,在这里你可以杀死一个坏人。有两种模式,简单和困难。我正在尝试设置一个重置按钮,该按钮将根据游戏所处的模式重置信息字段

范例 轻松玩,点击重置,游戏通过运行easyMode功能重置 玩硬,点击重置,游戏通过运行硬模式功能重置

抱歉,如果这很简单,这就是我为什么要做练习游戏的原因

我尝试在运行重置函数时运行当前选择了特定类的函数

var resetButton = document.querySelector("#new");
var easy = document.querySelector("#easy");
var hard = document.querySelector("#hard");
var playerHealth = document.querySelector("#php");
var playerFocus = document.querySelector("#pfocus");
var bossHealth = document.querySelector("#bhp");
var attack = document.querySelector("#attack");
var strong = document.querySelector("#strong");
var regenerate = document.querySelector("#regen");
var modeButtons = document.querySelectorAll(".mode");
var defenseLog = document.querySelector("#defenselog");
var offenseLog = document.querySelector("#offensivelog")
var boss = {}
var player = {}


setupModeButtons();
easyMode();
reset();

function hardMode(){
    player.health = 12;
    player.focus = 15;
    boss.health = 25;
    update()
};

function easyMode(){
    player.health = 10;
    player.focus = 10;
    boss.health = 12;
    update();
}

function update (){
    playerFocus.textContent = player.focus;
    playerHealth.textContent = player.health;
    bossHealth.textContent = boss.health;
};

function setupModeButtons(){
    for(var i = 0; i < modeButtons.length; i++) {
        modeButtons[i].addEventListener("click", function(){
            modeButtons[0].classList.remove("selected");
            modeButtons[1].classList.remove("selected");
            this.classList.add("selected"); 
        });
    }
}

function reset (){
    if(easyMode.classList=="selected"){
        easyMode();
    } else if(hardMode.classList=="selected") {
        hardMode();
    }
}
var resetButton=document.querySelector(“新建”);
var easy=document.querySelector(“easy”);
var hard=document.querySelector(“硬”);
var playerHealth=document.querySelector(“php”);
var playerFocus=document.querySelector(“pfocus”);
var bossHealth=文件查询选择器(“必和必拓”);
var-attack=document.querySelector(“攻击”);
var strong=document.querySelector(“#strong”);
var REGENATE=document.querySelector(“regen”);
var modeButtons=document.queryselectoral(“.mode”);
var defenseLog=document.querySelector(#defenseLog”);
var offenseLog=document.querySelector(“#offensivelog”)
var boss={}
var player={}
setupModeButtons();
easyMode();
重置();
函数hardMode(){
player.health=12;
player.focus=15;
boss.health=25;
更新()
};
函数easyMode(){
player.health=10;
player.focus=10;
boss.health=12;
更新();
}
函数更新(){
playerFocus.textContent=player.focus;
playerHealth.textContent=player.health;
bossHealth.textContent=boss.health;
};
函数setupModeButtons(){
对于(变量i=0;i

重置按钮可以工作,但始终使用函数easyMode重置,无论哪个类已使用函数setupModeButtons应用了“selected”类。classList
是一个DomTokenList(),因此它永远不会被
“selected”
。请改用
contains
方法:

function reset (){
    if(easyMode.classList.contains("selected")){
        easyMode();
    } else if(hardMode.classList.contains("selected")) {
        hardMode();
    }
}

我希望这会有帮助

我假设您有一个包含如下内容的DOM树

<button class='mode'>Easy</button>
<button class='mode'>Hard</button>
您的
reset()
函数正在尝试引用函数
easyMode.\uuu proto\uuu.classList
hardMode.\uuuu proto\uuu.classList
的原型对象链,而不是DOM按钮的状态。还要注意.classList是一个数组而不是字符串,因此需要.contains()


您需要
=
==
进行比较<代码>=是分配
easyMode.classList==“selected”
用于顶部检查,而
hardMode.classList==“selected”
用于底部检查。投票结束是一个打字错误。关于我的比较运算符,你绝对是对的。我改变了这一点,但问题仍然存在,我仍然需要帮助确定应该使用什么。更新的函数reset(){if(easy.classList==“selected”){easyMode();}否则if(hard.classList==“selected”){hardMode();}
easyMode
元素是否有其他类?如果有,您希望使用它来检查是否有该类。有人在上面的注释中向我指出了这个方向。这就是我所用的,现在它工作得很好<代码>函数重置(){if(easy.classList.contains(“selected”){easyMode();}else if(hard.classList.contains(“selected”){hardMode();}}另一条评论解决了我的问题,但关于按钮的命名,您肯定是对的,这也将在我的JS中带来更多的一致性。这与setupModebuttons函数的编写方式非常相似。我对这一点还很陌生,所以正在努力提高一致性和可读性。非常感谢。
<button class='mode mode-easy'>Easy</button>
<button class='mode mode-hard'>Hard</button>
function reset(){
    if( modeButtons[0].classList.contains("selected") ) {
        easyMode();
    } else if( modeButtons[1].classList.contains("selected") ) {
        hardMode();
    }
}