我有这个if-else语句给了我奇怪的回应......每当我首先选择“输出”时,之后没有其他选择会出现...... 仅供参考,我使用多选,因此我可以选择并显示我想要的数量。
$('#outputText').hide();
$('#armCB').hide();
$('#outputCB').hide();
$('#zoneText').hide();
$('#counterText').hide();
$('#flagText').hide();
$('#sensorText').hide();
('#select-choice-1').change(function(){
if ($('#output').is(':selected')){
$('#outputText').show();
}
else if ($('#arm').is(':selected')){
$('#armCB').show();
}
else if ($('#zone').is(':selected')){
$('#zoneText').show();
}
else if ($('#counter').is(':selected')){
$('#counterText').show();
}
else if ($('#flag').is(':selected')){
$('#flagText').show();
}
else if ($('#sensor').is(':selected')){
$('#sensorText').show();
}
else{
$('#outputText').hide();
$('#armCB').hide();
$('#zoneText').hide();
$('#counterText').hide();
$('#flagText').hide();
$('#sensorText').hide();
}
我的if-else声明中有错误吗?或者我必须在这里使用Switch case语句吗?如果是这样,我该怎么做?
HTML:
<div id="display" style=" clear:both">
<div class="left" style="float:left; width:48%">
<div data-role="fieldcontain">
<label for="select-choice-1" class="select">Select Category</label>
<select name="select-choice-1" id="select-choice-1" data-native-menu="false" data-mini="true" multiple="multiple" size="2">
<option value="arm" id="arm">Arm</option>
<option value="zone" id="zone">Zone Input</option>
<option value="output" id="output">Output</option>
<option value="counter" id="counter">Counter</option>
<option value="flag" id="flag">Flag</option>
<option value="sensor" id="sensor">Sensor</option>
</select>
</div>
</div>
<div class="right" style=" float: right; width:48%">
<div id="armCB">
<fieldset data-role="controlgroup">
<legend>Unit</legend>
<input type="checkbox" class="CB" name="armCB_1" id="armCB_1" class="custom" data-mini="true" />
<label for="armCB_1">Arming Status</label>
</fieldset>
</div>
<div id="outputText">
<p> Please enter an Output number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="outputTextInput" value="">
<input type="submit" id="outputAdd" value="Add"/>
<input type="submit" id="outputRemove" value="Remove"/>
</div>
<div id="zoneText">
<p> Please enter a Zone number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="zoneTextInput" value="">
<input type="submit" id="zoneAdd" value="Add"/>
<input type="submit" id="zoneRemove" value="Remove"/>
</div>
<div id="counterText">
<p> Please enter a counter number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="counterTextInput" value="">
<input type="submit" id="counterAdd" value="Add"/>
<input type="submit" id="counterRemove" value="Remove"/>
</div>
<div id="flagText">
<p> Please enter a Flag number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="flagTextInput" value="">
<input type="submit" id="flagAdd" value="Add"/>
<input type="submit" id="flagRemove" value="Remove"/>
</div>
<div id="sensorText">
<p> Please enter a Sensor number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="sensorTextInput" value="">
<input type="submit" id="sensorAdd" value="Add"/>
<input type="submit" id="sensorRemove" value="Remove"/>
</div>
</div>
</div>
答案 0 :(得分:15)
那只是标准的javascript: http://www.w3schools.com/js/js_switch.asp
switch(n) {
case 1:
//execute code block 1
break;
case 2:
//execute code block 2
break;
default:
// code to be executed if n is different from case 1 and 2
}
其中switch变量将是所选标记的名称
答案 1 :(得分:5)
在这种情况下,您不需要switch语句,您可以使用所选选项的当前值或id来选择目标元素:
$('#select-choice-1').change(function(){
$('.elements').hide();
$('#' + this.value + 'Text').show();
});
<强>更新强>
当您对select元素使用多个属性时,可以使用jQuery val
方法,它返回一个选定选项的数组,然后您可以根据所选值创建一个选择器。
$('#select-choice-1').change(function(){
$('div.right > div').hide();
var selector = '#' + $(this).val().join('Text, #') + 'Text';
$(selector).show();
});
答案 2 :(得分:1)
没有 JQuery Switch 语句。如果你想使用switch语句,你可以参考Javascript Switch。
这是我的方法。我将为#select-choice-1中的每个选项添加一个数据部分属性,它将具有相应div的id。
$('#select-choice-1').change(function(){
$('#outputText').hide();
$('#armCB').hide();
$('#zoneText').hide();
$('#counterText').hide();
$('#flagText').hide();
$('#sensorText').hide();
//the above hide() methods can be removed if you can
//add a class for all of these sections and say $('.sectionDivs').hide()
var divId = $(':selected',this).data('section');
$('#' + divId ).show();
}
答案 3 :(得分:1)
如果是多选,请不要使用else if
$('#select-choice-1').change(function() {
$('#outputText').hide();
$('#armCB').hide();
$('#zoneText').hide();
$('#counterText').hide();
$('#flagText').hide();
$('#sensorText').hide();
if ($('#output').is(':selected')) {
$('#outputText').show();
}
if ($('#arm').is(':selected')) {
$('#armCB').show();
}
if ($('#zone').is(':selected')) {
$('#zoneText').show();
}
if ($('#counter').is(':selected')) {
$('#counterText').show();
}
if ($('#flag').is(':selected')) {
$('#flagText').show();
}
if ($('#sensor').is(':selected')) {
$('#sensorText').show();
}
});
演示:Fiddle
如果您可以对标记进行一些更改
,可以将其简化为如下所示$(function(){
var $ctitems = $('#select-choice-1-items');
var $items = $('.item', $ctitems).hide();
$('#select-choice-1').change(function(){
$items.hide()
$('option:selected',this).each(function(){
var id = $(this).attr('id');
$('#' + id + 'Item').show()
});
});
});
HTML
<div id="display" style=" clear:both">
<div class="left" style="float:left; width:48%">
<div data-role="fieldcontain">
<label for="select-choice-1" class="select">Select Category</label>
<select name="select-choice-1" id="select-choice-1" data-native-menu="false" data-mini="true" multiple="multiple" size="2">
<option value="arm" id="arm">Arm</option>
<option value="zone" id="zone">Zone Input</option>
<option value="output" id="output">Output</option>
<option value="counter" id="counter">Counter</option>
<option value="flag" id="flag">Flag</option>
<option value="sensor" id="sensor">Sensor</option>
</select>
</div>
</div>
<div id="select-choice-1-items" class="right" style=" float: right; width:48%">
<div id="armItem" class="item">
<fieldset data-role="controlgroup">
<legend>Unit</legend>
<input type="checkbox" class="CB" name="armCB_1" id="armCB_1" class="custom" data-mini="true" />
<label for="armCB_1">Arming Status</label>
</fieldset>
</div>
<div id="outputItem" class="item">
<p> Please enter an Output number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="outputTextInput" value=""/>
<input type="submit" id="outputAdd" value="Add"/>
<input type="submit" id="outputRemove" value="Remove"/>
</div>
<div id="zoneItem" class="item">
<p> Please enter a Zone number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="zoneTextInput" value=""/>
<input type="submit" id="zoneAdd" value="Add"/>
<input type="submit" id="zoneRemove" value="Remove"/>
</div>
<div id="counterItem" class="item">
<p> Please enter a counter number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="counterTextInput" value=""/>
<input type="submit" id="counterAdd" value="Add"/>
<input type="submit" id="counterRemove" value="Remove"/>
</div>
<div id="flagItem" class="item">
<p> Please enter a Flag number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="flagTextInput" value=""/>
<input type="submit" id="flagAdd" value="Add"/>
<input type="submit" id="flagRemove" value="Remove"/>
</div>
<div id="sensorItem" class="item">
<p> Please enter a Sensor number and press "Add" button: </p>
<input style="background: white; color: black;" type="text" id="sensorTextInput" value=""/>
<input type="submit" id="sensorAdd" value="Add"/>
<input type="submit" id="sensorRemove" value="Remove"/>
</div>
</div>
</div>
演示:Fiddle