Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript if-else语句不工作_Javascript_Jquery - Fatal编程技术网

JavaScript if-else语句不工作

JavaScript if-else语句不工作,javascript,jquery,Javascript,Jquery,我对我的单选按钮表单的if-else声明有一些问题。您可以在此处实时查看: Jquery: $(document).ready(function() { $("input").click(function() { $check = true; }); $("#next1").click(function() { if ($check) { $("boks1").hide(); $("bok

我对我的单选按钮表单的if-else声明有一些问题。您可以在此处实时查看:

Jquery:

$(document).ready(function() {

    $("input").click(function() {
        $check = true;
    });

    $("#next1").click(function() {
        if ($check) {
            $("boks1").hide();
            $("boks2").show();
        } else {
            alert('Pick one');
        }
    });

});
HTML:


为什么单击“下一步”时未引发警报,且未选择单选按钮?当我选择一个并单击下一个div时,为什么没有显示下一个问题。

在外部范围中定义变量。如果``块丢失#`,则还需要
中的ids选择器。试试这个

$(document).ready(function() {

    var $check; 
    $("input").click(function() {
        $check = true;
    });

    $("#next1").click(function() {
        if ($check) {
            $("#boks1").hide();
            $("#boks2").show();
        } else {
            alert('Pick one');
        }
    });

});

您可以这样做,而不是使用变量来查找单选按钮是否被选中

注意:我正在使用
$(“输入:选中”).length>0
来确定是否使用
:checked
选择器选中了任何单选按钮

$(document).ready(function() {
    $("#next1").click(function() {
        if ($("input:checked").length > 0) {
            $("#boks1").hide();
            $("#boks2").show();
        } else {
            alert('Pick one');
        }
    });
});

在外部范围中定义变量。如果``块丢失
#`,则还需要
中的ids选择器。试试这个

$(document).ready(function() {

    var $check; 
    $("input").click(function() {
        $check = true;
    });

    $("#next1").click(function() {
        if ($check) {
            $("#boks1").hide();
            $("#boks2").show();
        } else {
            alert('Pick one');
        }
    });

});

您可以这样做,而不是使用变量来查找单选按钮是否被选中

注意:我正在使用
$(“输入:选中”).length>0
来确定是否使用
:checked
选择器选中了任何单选按钮

$(document).ready(function() {
    $("#next1").click(function() {
        if ($("input:checked").length > 0) {
            $("#boks1").hide();
            $("#boks2").show();
        } else {
            alert('Pick one');
        }
    });
});

问题在于您的
id
选择器中缺少
#

$("#boks1").hide();
$("#boks2").show();
但是,您应该在两个函数的父作用域中声明
$check
变量(因此在
ready
事件处理程序中):


否则,如果在选择单选按钮之前单击“下一步”,将不会定义
$check
。当它被定义时,它是在全局范围内,这不是一件好事。

问题仅仅是您缺少
id
选择器中的
#

$("#boks1").hide();
$("#boks2").show();
但是,您应该在两个函数的父作用域中声明
$check
变量(因此在
ready
事件处理程序中):


否则,如果在选择单选按钮之前单击“下一步”,将不会定义
$check
。当它被定义时,它在全局范围内,这不是一件好事。

定义变量,然后在单击输入时将其设置为true

$(document).ready(function() {

    var = $check;

        $("input").click(function() {
            $check = true;
        });

        $("#next1").click(function() {
            if ($check) {
                $("#boks1").hide();
                $("#boks2").show();
            } else {
                alert('Pick one');
            }
        });

    });

定义变量,然后在单击输入时将其设置为true

$(document).ready(function() {

    var = $check;

        $("input").click(function() {
            $check = true;
        });

        $("#next1").click(function() {
            if ($check) {
                $("#boks1").hide();
                $("#boks2").show();
            } else {
                alert('Pick one');
            }
        });

    });


没有必要使其成为全局的,也不必污染全局名称空间;它可以在on ready功能中定义。可以,编辑我的答案。我还提供了另一种简单的方法。如果变量在另一个范围内声明,而没有
var
语句,那么它不是固定在全局范围内吗?我认为问题在于糟糕的jQuery选择器。是的,选择器缺少
,修改了答案。@gion_13-是的,
$check
变量在全局范围内-但这是一个坏主意,Shankar纠正它是正确的。没有必要使其全局化并污染全局命名空间;它可以在on ready功能中定义。可以,编辑我的答案。我还提供了另一种简单的方法。如果变量在另一个范围内声明,而没有
var
语句,那么它不是固定在全局范围内吗?我认为问题出在坏的jQuery选择器上。是的,选择器丢失了
,修改了答案。@gion_13-是的,
$check
变量在全局范围内-但这是个坏主意,Shankar正确地纠正了它。事实上不是这样;只要定义了
$check
,就可以正常工作。我没有说它不起作用,我只是说如果在单击
输入
元素之前单击按钮,则不会定义
$check
,因为
$check
当前是在
单击
事件处理程序中定义的。(无论如何,我有一部分是错的,我只是指弹出窗口,而不是隐藏/显示,所以没关系。)那么,为什么我单击“下一步”时没有显示#boks2?@Railsbeginner-很好,我也注意到了!很高兴你能让它工作:)实际上不是真的;只要定义了
$check
,就可以正常工作。我没有说它不起作用,我只是说如果在单击
输入
元素之前单击按钮,则不会定义
$check
,因为
$check
当前是在
单击
事件处理程序中定义的。(无论如何,我有一部分是错的,我只是指弹出窗口,而不是隐藏/显示,所以没关系。)那么,为什么我单击“下一步”时没有显示#boks2?@railsbeginer-很好,我也注意到了!很高兴你能让它工作:)