这是我正在尝试的代码 -
DIVS -
<div id="showdiv16" style="display:none;">...</div>
<div id="showdiv17" style="display:none;">...</div>
<div id="showdiv18" style="display:none;">...</div>
<div id="showdiv19" style="display:none;">...</div>
现在我有一个下拉菜单,我从中获取值16,17,18,19
在这个下拉菜单中,我调用onchange方法为
<select name="category" id="category" onChange="showSelected(this.value);showSubcategory();" >
我的JavaScript功能是 -
<script type="text/javascript">
function showSelected( sapna )
{
var myDivs = new Array(16,17,18,19);
for(var i=0; i<myDivs.length; i++)
{
if(myDivs[i] == sapna)
{
var divtoshow = 'showdiv'+sapna;
document.getElementById('showdiv'+sapna).style.display = "block";
}
else
{
document.getElementById('showdiv'+myDivs[i]).style.display = "none";
}
}
return false;
}
</script>
让我知道如何实现此显示/隐藏div效果。
答案 0 :(得分:3)
我知道这被标记为javascript而不是jQuery,但使用jQuery这样做是非常简单的,所以这是一个例子。
$('#category').on('change click', function() {
$('div').hide();
$('#showdiv' + this.value).show();
});
工作jsFiddle:http://jsfiddle.net/UBsp9/
答案 1 :(得分:2)
我的第一个猜测是你试图将你的选择框中的字符串结果与myDivs数组中的整数进行比较。
这里有一些与你的原始代码匹配的vanilla js(尽管你可以使用像jquery这样的JS库来节省很多麻烦,所以你可能想看看它。)
function showSelected(sapna)
{
var myDivs = new Array(16,17,18,19);
for(var i=0; i<myDivs.length; i++)
{
document.getElementById('showdiv'+myDivs[i]).style.display = (myDivs[i] == parseInt(sapna)) ? 'block' : 'none';
} // end for i in myDivs.length
} // end function showSelected
并且js小提琴:http://jsfiddle.net/Wyedr/1/
答案 2 :(得分:2)
虽然jQuery
会更容易和更清晰,但请在下面的JavaScript
中进行说明:
<html>
<head>
<title>test</title>
<style type="text/css">
div{height:50px;width:200px;text-align:center;
vertical-align:middle;border:1px dotted green;
background-color:khaki;}
</style>
</head>
<body>
<select id="test" onchange="showSelected(this.value)">
<option value="-1" selected="selected">select</option>
<option value="16">cat 16</option>
<option value="17">cat 17</option>
<option value="18">cat 18</option>
<option value="19">cat 19</option>
</select>
<div id="showdiv16" style="display:none;">16</div>
<div id="showdiv17" style="display:none;">17</div>
<div id="showdiv18" style="display:none;">18</div>
<div id="showdiv19" style="display:none;">19</div>
</body>
<script type="text/javascript">
var myDivs = new Array(16, 17, 18, 19);
function showSelected(sapna) {
var t = 'showdiv' + sapna,
r, dv;
for (var i = 0; i < myDivs.length; i++) {
r = 'showdiv' + myDivs[i];
dv = document.getElementById(r);
if (dv) {
if (t === r) {
dv.style.display = 'block';
} else {
dv.style.display = 'none';
}
}
}
return false;
}
</script>
</html>
答案 3 :(得分:0)
如果你可以使用jquery那么你可以这样做:
<div id="showdiv16" class='targets' style="display:none;">Div 16</div>
<div id="showdiv17" class='targets' style="display:none;">Div 17</div>
<div id="showdiv18" class='targets' style="display:none;">Div 18</div>
<div id="showdiv19" class='targets' style="display:none;">Div 19</div>
<select name="category" id="category">
<option value=''>Select</option>
<option value='16'>16</option>
<option value='17'>17</option>
<option value='18'>18</option>
<option value='19'>19</option>
</select>
这里是jquery
$(function(){
$('#category').change(function(){
var divToShow = $(this).val();
$('.targets').hide();
$('#showdiv' + divToShow ).show();
});
})
查看工作演示
答案 4 :(得分:0)
你也可以尝试这个