Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.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 选择时显示/隐藏多个DIV id_Javascript_Jquery - Fatal编程技术网

Javascript 选择时显示/隐藏多个DIV id

Javascript 选择时显示/隐藏多个DIV id,javascript,jquery,Javascript,Jquery,我希望div根据所选的选项显示 这就是我正在尝试的,但是当我选择一个新选项时,我想替换那里的div,当我选择新选项时,这会一个接一个地显示它们 <div id="body" style="width:300px;"> <div> <form name="frmOptions"> <select id="cboOptions" onChange="displayDiv('div',this)"> <option value="1">Opt

我希望div根据所选的选项显示

这就是我正在尝试的,但是当我选择一个新选项时,我想替换那里的div,当我选择新选项时,这会一个接一个地显示它们

<div id="body" style="width:300px;">
<div>
<form name="frmOptions">
<select id="cboOptions" onChange="displayDiv('div',this)">
<option value="1">Option0</option>
<option value="2">Option1</option>
<option value="3">Option2</option>
<option value="4">Option3</option>
</select>
</div>

<div id="content" style="float:right;">

    <div id="div0" style="display:none;">Test 0</div>
    <div id="div1" style="display:none;">Test 1</div>
    <div id="div2" style="display:none;">Test 2</div>
    <div id="div3" style="display:none;">Test 3</div>

</div>

</form>
我正在使用的脚本

<script type="text/javascript">
     function displayDiv(id,sel){
     var div = document.getElementById(id+sel.selectedIndex);
     if (div) div.style.display = 'block';
     }
</script>

有人能帮我吗

您需要将不想显示的div设置为不可见。javascript代码开头的类似内容将在每次调用函数时将所有div重置为不可见。然后只显示所需的div

$("#content").find("div").each(function (index) {
    $(this).attr('display', 'none');
});

修正你的VAL:如果你是从0开始计算,那么从0开始计算。 当选择更改时,隐藏所有div,显示右侧div

$('select').change(function(){
    $('#content div').hide();
    $('#div' + $(this).val() ).show();
});

如果您使用的是jQuery,请尝试以下功能:

function displayDiv(id, sel) {
    $('#content div').hide();
    var div = document.getElementById(id + sel.selectedIndex);
    if (div) div.style.display = 'block';
}

唯一的变化是,我们先隐藏所有div,然后再显示所选div。要使用jQuery,您还可以做很多更改。

是的,如果您不使用jQuery,请执行以下操作:

function displayDiv(id, sel) {
    var parent = document.getElementById("content");
    console.log(parent.childNodes);

    for (var childIndex = 0; childIndex < parent.childNodes.length; childIndex++) {
        if (parent.childNodes[childIndex].style)
            parent.childNodes[childIndex].style.display = "none";
    }

 var div = document.getElementById(id+sel.selectedIndex);
 if (div) div.style.display = 'block';
 }

既然您已经用jQuery标记了您的问题,我将为您提供一个jQuery解决方案:

$("#cboOptions").change(function(){
    $("#content div").hide();                // hide all the divs
    $("#div" + (+$(this).val()- 1)).show();  // show the appropriate one
});
演示:

上面的内容应该放在document.ready处理程序中或文件的底部。您应该将更改处理程序绑定到那里,而不是使用内联的“onchange”属性。此外,您可以为所有div提供一个公共类,甚至可以将content div{display:none;}放入样式表中,而不是在所有div上使用内联样式属性,如我的演示中所示


请注意,结束标记应该与开始标记位于同一个标记内。

您不必使用jquery,但它更简单

    var currentDIV;
    <script type="text/javascript">
     function displayDiv(id,sel){
     var div = document.getElementById(id+sel.selectedIndex);
     if (div) 
      {
        div.style.display = 'block';
        if(currentDIV) currentDIV.style.display = 'none';
        currnetDIV = div;
      }     
    }
   </script>

您使用jQuery是因为您的示例不是。他将其标记为jQuery,所以我可以在jQuery中自由回答;好的,这就是我需要的。tyvm既然您正在使用jQuery,为什么不使用.show?或$content div.hide;^不知道您可以选择这种方式,这是一个更简单的解决方案:
    var currentDIV;
    <script type="text/javascript">
     function displayDiv(id,sel){
     var div = document.getElementById(id+sel.selectedIndex);
     if (div) 
      {
        div.style.display = 'block';
        if(currentDIV) currentDIV.style.display = 'none';
        currnetDIV = div;
      }     
    }
   </script>