Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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 带选择选项的开关箱_Javascript_Jquery_Switch Statement - Fatal编程技术网

Javascript 带选择选项的开关箱

Javascript 带选择选项的开关箱,javascript,jquery,switch-statement,Javascript,Jquery,Switch Statement,我在使用选择选项的值设置开关盒时遇到问题,下面是我使用的代码: <form id="selectcub" name="selectcub"> <select id="cub01" name="cub01" class="cub"> <option value="2013" selected>2013</optio

我在使用选择选项的值设置开关盒时遇到问题,下面是我使用的代码:

<form id="selectcub" name="selectcub">
    <select id="cub01" name="cub01" class="cub">
        <option value="2013" selected>2013</option>
        <option value="2012">2012</option>
        <option value="2011">2011</option>
        <option value="2010">2010</option>
        <option value="2009">2009</option>
        <option value="2008">2008</option>
        <option value="2007">2007</option>
    </select>
                   
    <select id="cub02" name="cub02" class="cub">
        <option value="01">01</option>
        <option value="02">02</option>
        <option value="03" selected>03</option>
        <option value="04">04</option>
        <option value="05">05</option>
        <option value="06">06</option>
        <option value="07">07</option>
        <option value="08">08</option>
        <option value="09">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
    </select>
                    
    <a id="cubdl" href="#" class="button">Open</a>
</form>

<script type="text/javascript">
    $(document).ready(function(){
        switch($('#cub02 option:selected').val()) {
            case 01:
                alert("I am an alert box! 1");
            break;
            case 02:
                alert("I am an alert box! 2");
            break;
            default:
                //
        }
    });
</script>

2013
2012
2011
2010
2009
2008
2007
01
02
03
04
05
06
07
08
09
10
11
12
$(文档).ready(函数(){
开关($('#cub02选项:选定').val(){
案例01:
警报(“我是一个警报框!1”);
打破
案例02:
警报(“我是一个警报框!2”);
打破
违约:
//
}
});
我做错了什么?下面是一个实时演示:

val()
总是会返回一个字符串。尝试在您的
开关语句中输入“01”、“02”等。

试试这个-

演示
-->


问题是您正在绑定到
$(document).ready()
,而不是单击链接。因此javascript正在检查加载时的值,该值为
03
,您没有任何
大小写

如果您更改在
01
上选择的默认值,并将案例置于引号中,您可以看到它工作正常。

两件事: 第一:如前所述,val()返回一个字符串,因此必须使用例如“01”。 第二:当dom就绪时,该函数被正确调用,因此只有在代码中选择“03”时,才会出现警报。 您可能正在寻找事件侦听器

$(document).ready(function () {
    $('#cub02').on('change', function(){
        switch($('#cub02 option:selected').val()) {
            case '01':
                alert("I am an alert box! 1");
            break;
            case '02':
                alert("I am an alert box! 2");
            break;
        }
    });
});
还有小提琴:

如果您试图使用字符串表示,则应使用parseInt(val)或切换case语句以使用数字的带引号的字符串版本

修改提供的示例:

$(document).ready(function(){
                    var val = $('#cub02').val();
                    switch(parseInt(val)) {
                    case 01:
                        alert("I am an alert box! 1");
                    break;
                    case 02:
                        alert("I am an alert box! 2");
                    break;
                    default:
                    //
                }
            });

或者
parseInt($('#cub02选项:selected').val(),10)
(但即使这样,前导零也会被去掉,因此使用字符串更容易)。+1不仅将
val
返回字符串,而且
开关将使用
=
按顺序比较案例,所以没有类型强制。你想做什么?你应该设置基数,因为这里的数字以0开头:parseInt($('#cub02').val(),10)不知道为什么会被否决,因为这在技术上是正确的,在页面加载时,所选选项的值是“03”,并且开关只在页面加载时工作。非常好,谢谢你,对于延迟的响应,我很抱歉,我最近太忙了=/将案例放在引号中,并将函数“$”(“#cub02”).change(function(){”替换为“$(document).ready()”。非常感谢您,对于这个愚蠢的问题,我感到抱歉。没有愚蠢的问题。也许您还想使用
$(document).ready(function(){
                    var val = $('#cub02').val();
                    switch(parseInt(val)) {
                    case 01:
                        alert("I am an alert box! 1");
                    break;
                    case 02:
                        alert("I am an alert box! 2");
                    break;
                    default:
                    //
                }
            });