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:
//
}
});