Javascript 使用复选框更改jQuery.change()方法中正在更改的变量的值

Javascript 使用复选框更改jQuery.change()方法中正在更改的变量的值,javascript,jquery,html,checkbox,Javascript,Jquery,Html,Checkbox,大家好,我正在努力提高编程水平,如果你们能帮助我,我将不胜感激。我想做的是设置一个变量var easymode=false。。然后我想检查是否通过复选框选择了easymode选项。我使用jQuery change()方法,这样当用户点击框上下时,我就可以动态地获得一个布尔值。在change方法中,我想将easymode的值更改为true或false。我知道我做得不对if(easymode){ console.log('true'); } 选中easymode时不会变为true 代码 $(文档).

大家好,我正在努力提高编程水平,如果你们能帮助我,我将不胜感激。我想做的是设置一个变量
var easymode=false。。然后我想检查是否通过复选框选择了easymode选项。我使用jQuery change()方法,这样当用户点击框上下时,我就可以动态地获得一个布尔值。在change方法中,我想将easymode的值更改为true或false。我知道我做得不对
if(easymode){
console.log('true');
}
选中easymode时不会变为true

代码

$(文档).ready(函数(){
var easymode=false;
console.log(easymode)
$(“输入[type=checkbox]”)。更改(函数(){
if($(this.val()==“easy”&&($(this.is)(':checked')){
easymode=true;
}
else if($(this.val()=“easy”&&&&!$(this).is(':checked')){
//警报(“不容易模式”);
easymode=false;
}
如果($(this.val()=“hard”和(&$(this.is)(“:checked”)){
警报(“硬模式”)
}
如果($(this.val()=“hard”&&&&!$(this).is(':checked')){
警报(“非硬模式”);
}
})
if(easymode){
console.log('true');
}
)
});
容易
坚固的
我想您正在寻找这样的产品:

当用户单击easy时,easy模式打开(easymode=true),而hard未选中。当用户硬点击时,easymode=false和easy被取消选中

当然,您可以使用收音机代替复选框,并在默认情况下具有选中/未选中功能

$(document).ready(function(){
    var easymode = false,
        easy = $('#justchange'),
        hard = $('#fullprice');

    easy.on('click', function(){
        if($(this).is(':checked')){
            easymode = true;
            hard.prop('checked', false);
        }else{
            easymode = false;
        }
    });

    hard.on('click', function(){
        if($(this).is(':checked')){
            easymode = false;
            easy.prop('checked', false);
            alert('hard mode');
        }else{
            alert('not hard mode');

        }
    });
});

另外,jsfiddle:

您的代码中有一个错误,关闭了一个额外的括号。另外,我还没有添加,但是当其中一个框被勾选时,您可能希望取消勾选另一个框

$(document).ready(function(){

        var easymode = false;
        console.log(easymode);

            $("input[type=checkbox]").on("change", function(){
                if($(this).val() == "easy" && $(this).is(':checked')){
                     easymode = true;
                     alert('easy mode');
                }
                else if($(this).val() == "easy" && !$(this).is(':checked')){
                     alert('not easy mode');
                     easymode = false;
                }

                if($(this).val() == "hard" && $(this).is(':checked')){
                    alert('hard mode');
                }
                else if($(this).val() == "hard" && !$(this).is(':checked')){
                    alert('not hard mode');
                }
            });

        if(easymode){
            console.log('true');
        }
    });

您的if条件在更改处理程序之外。因此,该语句仅在加载DOM时执行。只需移动
if(easymode){
block inside change handler这很有帮助,但我有点担心,我希望在change函数之外获得这些值,因为我认为在change函数中编写大量代码是不合适的,有没有办法从change函数中获取这些值,或者编写大量与其他函数相关的代码是可以的gs与更改方法中框的更改无关。谢谢。就像我想做的事情取决于它是否在easymode中,取决于是否有更改。我不知道我是否表达了我自己的权利。创建一个函数来执行您想执行的任何操作,无论是否选中复选框,然后调用该函数我不同意你说在change方法中调用函数。谢谢。我想change方法现在就像是一个包装器,就像$(document).ready(){}随便你怎么想
$(document).ready(function(){

        var easymode = false;
        console.log(easymode);

            $("input[type=checkbox]").on("change", function(){
                if($(this).val() == "easy" && $(this).is(':checked')){
                     easymode = true;
                     alert('easy mode');
                }
                else if($(this).val() == "easy" && !$(this).is(':checked')){
                     alert('not easy mode');
                     easymode = false;
                }

                if($(this).val() == "hard" && $(this).is(':checked')){
                    alert('hard mode');
                }
                else if($(this).val() == "hard" && !$(this).is(':checked')){
                    alert('not hard mode');
                }
            });

        if(easymode){
            console.log('true');
        }
    });