Javascript 尝试获取事件外部已更新数组的值

Javascript 尝试获取事件外部已更新数组的值,javascript,jquery,arrays,oop,Javascript,Jquery,Arrays,Oop,在下面的函数changing()中,我试图获取数组arr[0]的值,并输出一些与数组值相关的信息。我想问题是arr没有更新。我需要更新事件之外的这个数组,以便像在函数中一样使用该值。我该怎么做?我正在学习pub/sub和.trigger(),所以如果您能给出与该样式相关的结果,那就太好了 arr = [] $('body').on("clicked", function () { // $(".clickMe").on("click", function(){ if ($('#t

在下面的
函数changing()
中,我试图获取数组arr[0]的值,并输出一些与数组值相关的信息。我想问题是arr没有更新。我需要更新事件之外的这个数组,以便像在函数中一样使用该值。我该怎么做?我正在学习pub/sub和.trigger(),所以如果您能给出与该样式相关的结果,那就太好了

arr = []
$('body').on("clicked", function () {
    // $(".clickMe").on("click", function(){
    if ($('#thisBox')[0].checked) {
        $('#thisBox').prop('checked', false);
        data = false;
        console.log(data)
        arr[0] = (data)
        console.log(arr)
    } else {
        $('#thisBox').prop('checked', true);
        // console.log(prop('checked'))
        data = true;
        console.log(data)
        arr[0] = data
        console.log(arr)
    }
    // });
});
console.log("outside" + arr)

function changing() {
    $('body').trigger("clicked");
    if (arr[0] == undefined) {
        $(".output").html("set undefined")
    } else if (arr[0] == true) {
        $(".output").html("set true")
    } else if (arr[0] == false) {
        $(".output").html("set false")
    }
}
changing()

$(".secondClick").on("click", function () {
    $('body').trigger("clicked");
    if (arr[0] == true) {
        $("body").css("backgroundColor", 'blue')
    } else if (arr[0] == false) {
        $("body").css("backgroundColor", 'green')
    }
})

我相信你想要的代码看起来更像这样。代码是自注释的

/*单击手柄更改颜色按钮*/
$('.secondClick')。单击(函数(){
/*将“选中”设置为复选框的布尔值*/
var checked=$('thisBox').prop('checked');
/*执行函数*/
更改(已检查);
});
/*处理交替颜色按钮*/
$('.alternateClick')。单击(函数(){
/*设置与复选框相反的复选框*/
$('thisBox').prop('checked'),!$('thisBox').prop('checked');
/*将“选中”设置为复选框的布尔值*/
var checked=$('thisBox').prop('checked');
/*执行函数*/
更改(已检查);
});
/*使用布尔值更改主体颜色*/
函数更改(myBoolean){
if(myBoolean){
$(“body”).css(“backgroundColor”,“blue”);
}否则{
$(“body”).css(“背景色”,“绿色”)
}
}
/*启动第一个更改事件,以便页面
第一页运行时为绿色*/
更改($('thisBox').prop('checked')

变色

其他颜色
这个盒子是什么???也许你可以做一把小提琴:这样你可以帮助你更好。@James你在哪里看到一个异步调用?“我想问题是arr没有被更新”->它在你的小提琴中完美地更新了,我得到
[true]
然后
[false]
然后
[true]
这个描述不是很简洁。建议您使用预期结果和重现问题的步骤更新问题。问题文本非常模糊,谢谢您的回复。这不需要使用数组,但我试图学习如何在事件发生后更新数组,并在整个项目中使用数组值,就像我在问题代码中尝试做的那样。我开始认为这是不可能的,我必须改变我的想法,但我真的认为这是可能的。通过bub sub可能使用.trigger()和.on(),但每次我尝试这样做时,我都会被卡住。