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