Javascript Dropdown Show / Hide Div

如何解决Javascript Dropdown Show / Hide Div

| 我正在使用以下代码基于下拉选择显示/隐藏div。但是,我希望每个较高的数字保持先前的div显示,而只需添加另一个div。用户正在选择“乘客人数”,因此所选的选项应显示那么多格。
<script>
function display_passengerDiv(e){
   document.getElementById(\'passenger1\').style.display = \"none\";
   document.getElementById(\'passenger2\').style.display = \"none\";
   document.getElementById(\'passenger3\').style.display = \"none\";
   document.getElementById(\'passenger\' + e).style.display = \"block\";
}
</script>

<select name=\"#\" id=\"#\" onChange=\"display_passengerDiv(this.selectedIndex);\">
      <option selected=\"selected\"> </option>
      <option >1</option>
      <option >2</option>
      <option >3</option>
</select>

<div id=\"passenger1\" style=\"display:none;\"> hey,1 works </div>
<div id=\"passenger2\" style=\"display:none;\"> hey,2 works </div>
<div id=\"passenger3\" style=\"display:none;\"> hey,3 works </div>
我怎样才能做到这一点?     

解决方法

        我假设您希望在选择3时显示所有三个div?如果是这样的话 :
function display_passengerDiv(e) {
    var i,changeDisplay = function(id,value) {
        var arrayLength,j;
        if (typeof(id) === \'string\') {
            document.getElementById(\'passenger\' + id).style.display = value;
        } else {
            arrayLength = id.length;
            for(j = 0; j < arrayLength; j++) {
                changeDisplay(id[j],value);
            }
        }
    };

    changeDisplay([\'1\',\'2\',\'3\'],\'none\');

    for(i = 1; i <= e; i++) {
        changeDisplay(i + \'\',\'block\');
    }
}
    ,        
<ul id=\"sddm\">
    <li><a href=\"#\" 
        onmouseover=\"mopen(\'m1\')\" 
        onmouseout=\"mclosetime()\">Home</a>
        <div id=\"m1\" 
            onmouseover=\"mcancelclosetime()\" 
            onmouseout=\"mclosetime()\">
        <a href=\"#\">HTML Drop Down</a>
        <a href=\"#\">DHTML Menu</a>
        <a href=\"#\">JavaScript DropDown</a>
        <a href=\"#\">Cascading Menu</a>
        <a href=\"#\">CSS Horizontal Menu</a>
        </div>
    </li>
    <li><a href=\"#\" 
        onmouseover=\"mopen(\'m2\')\" 
        onmouseout=\"mclosetime()\">Download</a>
        <div id=\"m2\" 
            onmouseover=\"mcancelclosetime()\" 
            onmouseout=\"mclosetime()\">
        <a href=\"#\">ASP Dropdown</a>
        <a href=\"#\">Pulldown menu</a>
        <a href=\"#\">AJAX Drop Submenu</a>
        <a href=\"#\">DIV Cascading Menu</a>
        </div>
    </li>
    <li><a href=\"#\">Order</a></li>
    <li><a href=\"#\">Help</a></li>
    <li><a href=\"#\">Contact</a></li>
</ul>
<div style=\"clear:both\"></div>
CSS代码
    #sddm
    {   margin: 0;
        padding: 0;
        z-index: 30}

    #sddm li
    {   margin: 0;
        padding: 0;
        list-style: none;
        float: left;
        font: bold 11px arial}

    #sddm li a
    {   display: block;
        margin: 0 1px 0 0;
        padding: 4px 10px;
        width: 60px;
        background: #5970B2;
        color: #FFF;
        text-align: center;
        text-decoration: none}

    #sddm li a:hover
    {   background: #49A3FF}

    #sddm div
    {   position: absolute;
        visibility: hidden;
        margin: 0;
        padding: 0;
        background: #EAEBD8;
        border: 1px solid #5970B2}

        #sddm div a
        {   position: relative;
            display: block;
            margin: 0;
            padding: 5px 10px;
            width: auto;
            white-space: nowrap;
            text-align: left;
            text-decoration: none;
            background: #EAEBD8;
            color: #2875DE;
            font: 11px arial}

        #sddm div a:hover
        {   background: #49A3FF;
            color: #FFF}
JS代码
// Copyright 2006-2007 javascript-array.com

var timeout = 500;
var closetimer  = 0;
var ddmenuitem  = 0;

// open hidden layer
function mopen(id)
{   
    // cancel close timer
    mcancelclosetime();

    // close old layer
    if(ddmenuitem) ddmenuitem.style.visibility = \'hidden\';

    // get new layer and show it
    ddmenuitem = document.getElementById(id);
    ddmenuitem.style.visibility = \'visible\';

}
// close showed layer
function mclose()
{
    if(ddmenuitem) ddmenuitem.style.visibility = \'hidden\';
}

// go close timer
function mclosetime()
{
    closetimer = window.setTimeout(mclose,timeout);
}

// cancel close timer
function mcancelclosetime()
{
    if(closetimer)
    {
        window.clearTimeout(closetimer);
        closetimer = null;
    }
}

// close layer when click-out
document.onclick = mclose; 
在这里查看完整的脚本     ,        
<script type=\"text/javascript\">
function display_passengerDiv(){
    var numPass = document.getElementById(\'numPass\').value;
    var elms = document.getElementsByName(\'passenger\');
    for(var h = 0; h<elms.length; h++) {
        elms[h].style.display = \'none\';
    }
    for(var i = 0; i < numPass; i++) {
        elms[i].style.display = \'block\';
    }
}
</script>

<select id=\"numPass\" onChange=\"javascript:display_passengerDiv();\">
      <option selected=\"selected\">Choose</option>
      <option value=\"1\">1</option>
      <option value=\"2\">2</option>
      <option value=\"3\">3</option>
</select>

<div id=\"passenger1\" name=\"passenger\" style=\"display:none;\"> hey,1 works </div>
<div id=\"passenger2\" name=\"passenger\" style=\"display:none;\"> hey,2 works </div>
<div id=\"passenger3\" name=\"passenger\" style=\"display:none;\"> hey,3 works </div>`enter code here`
首先,我们获取选择的值,然后使用它遍历div。 Elms是名称为passenger的div,以elms [0]或passenger1开头。此代码首先隐藏所有div,然后重新显示所选的总数。     ,        尝试这个:
<script>

   function display_passengerDiv(e){
      var i,passenger,dropdown = document.getElementById(\'passenger_dropdown\'),numPassengers = dropdown.options.length - 1;
      val = dropdown.options[e].text;

      if (val.length < 1) { 
          passenger = 0; 
      } else { 
          passenger = parseInt(val); 
      }

      for(i = 1; i <= numPassengers; i++) { 
         if (i <= passenger) {
            document.getElementById(\'passenger\' + i).style.display = \"block\";
         } else {
            document.getElementById(\'passenger\' + i).style.display = \"none\";
         }
      }
   }

</script>