我遇到了一些布尔值和范围的问题。我设置了一个全局布尔值为false,在一个函数上布尔值变为true。如果布尔值为true,我希望运行另一个函数。然而,布尔值只在使其为真的函数的作用域中被更改,并且在全局范围内仍然为假。因此,以下需要布尔值为true的函数没有运行。
我的代码的第一部分看起来像这样:
let threePick= false;
let twoPick = false;
let onePick = false;
let found = false;
var startGame = false;
function selector() {
$("#threebut").click(function () {
if (found === false) {
found = true;
onePick = true;
twoPick = true;
var input = this;
input.disabled = true;
}
})
$("#onebut").click(function () {
if (found === false) {
found = true;
threePick = true;
twoPick = true;
var input = this;
input.disabled = true;
}
})
$("#twobut").click(function () {
if (found === false) {
found = true;
threePick = true;
onePick=true;
var input = this;
input.disabled = true;
};
});
};
selector();
function enemy() {
$("#twobut").click(function () {
if (twoPick === true){
var input = this;
input.disabled = true;
startGame = true;
}
});
$("#threebut").click(function() {
if (threePick === true){
input.disabled = true;
startGame = true;
}
});
$("#twobut").click(function() {
if (twoPick === true){
var input = this;
input.disabled = true;
startGame = true;
}
});
}
enemy();
请注意,在我的代码的下一部分中,敌人();现在将startGame布尔值更改为true:
function gameStart(){
if (startGame === true){
var button = $('<button/>', {
text: 'Attack'
})
$('#atkButton').append(button);
}
}
gameStart();
我希望函数在布尔值为true但布尔值仅在本地更改时运行。我知道访问局部变量是不可能的,但是有什么方法可以绕过这一点,或者我可以使用的替代方法吗?
另外,我为我的低效代码道歉,我只做了几天的javascript。如有任何帮助,我们不胜感激!
发布于 2018-06-14 06:33:05
gameStart()
在定义后立即调用,并且只调用一次。此时,startGame
的值为false
。
enemy()
为点击按钮#threebut
和#twobut
设置事件监听器。仅当单击其中一个按钮时,startGame
的值才会设置为true。如果此后调用gameStart()
,它将看到startGame
为true。
发布于 2018-06-14 06:42:19
您的两个函数selector
和enemy
为HTML中元素的单击操作定义了事件处理程序。除非您单击这些元素,否则不会调用这些事件处理程序和附加的函数。
您的id=twobut
元素附加了三个不同的事件处理程序,当单击该元素时,它们都将触发。
通常,在jQuery中使用$(document).ready(function() { ... });
,您可以在其中调用selector();
和enemy();
,因此,当DOM正确加载并且可以成功附加事件处理程序时,它才会运行。
也许可以添加页面中的HTML来创建一个工作示例?
https://stackoverflow.com/questions/50847129
复制相似问题