首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JQuery/Javascript:获取本地更改的布尔值

JQuery/Javascript:获取本地更改的布尔值
EN

Stack Overflow用户
提问于 2018-06-14 06:23:53
回答 2查看 32关注 0票数 0

我遇到了一些布尔值和范围的问题。我设置了一个全局布尔值为false,在一个函数上布尔值变为true。如果布尔值为true,我希望运行另一个函数。然而,布尔值只在使其为真的函数的作用域中被更改,并且在全局范围内仍然为假。因此,以下需要布尔值为true的函数没有运行。

我的代码的第一部分看起来像这样:

代码语言:javascript
复制
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:

代码语言:javascript
复制
function gameStart(){
    if (startGame === true){
        var button = $('<button/>', {
            text: 'Attack'
        })
        $('#atkButton').append(button);
    }
}
gameStart();

我希望函数在布尔值为true但布尔值仅在本地更改时运行。我知道访问局部变量是不可能的,但是有什么方法可以绕过这一点,或者我可以使用的替代方法吗?

另外,我为我的低效代码道歉,我只做了几天的javascript。如有任何帮助,我们不胜感激!

EN

回答 2

Stack Overflow用户

发布于 2018-06-14 06:33:05

gameStart()在定义后立即调用,并且只调用一次。此时,startGame的值为false

enemy()为点击按钮#threebut#twobut设置事件监听器。仅当单击其中一个按钮时,startGame的值才会设置为true。如果此后调用gameStart(),它将看到startGame为true。

票数 1
EN

Stack Overflow用户

发布于 2018-06-14 06:42:19

您的两个函数selectorenemy为HTML中元素的单击操作定义了事件处理程序。除非您单击这些元素,否则不会调用这些事件处理程序和附加的函数。

您的id=twobut元素附加了三个不同的事件处理程序,当单击该元素时,它们都将触发。

通常,在jQuery中使用$(document).ready(function() { ... });,您可以在其中调用selector();enemy();,因此,当DOM正确加载并且可以成功附加事件处理程序时,它才会运行。

也许可以添加页面中的HTML来创建一个工作示例?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50847129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档