0

我一直在尝试创建一个包含 4 个元素的表单。一个是复选框的下拉框,另一个是简单的复选框。我试图将它们放在另一个下方。困难在于当单击带有复选框的下拉菜单时,另一个下拉菜单会向下滑动。在使用复选框关闭下拉菜单时,它们会再次向上滑动。我试图将它们放在另一个下方,这样如果单击带有复选框的下拉菜单,另一个就会变得不可见并且不会向下滑动。当复选框的下拉菜单关闭时,剩余的下拉菜单只会显示出来。有人可以帮我解决这个问题。我正在尝试模仿luxuryretreats.com上的过滤器之类的东西

下面是代码。

<html>
<head>
<script type="text/javascript">
function ExposeList1() {
    var showstatus = document.getElementById('ScrollCountry').style.visibility;
    if (showstatus == 'hidden') {
        document.getElementById('ScrollCountry').style.visibility = "visible";
        document.getElementById('Scrollguests').style.visibility = "hidden";
        document.getElementById('Scrollminprice').style.visibility = "hidden";
        document.getElementById('Scrollmaxprice').style.visibility = "hidden";
    } else {
        document.getElementById('ScrollCountry').style.visibility = 'hidden';
        document.getElementById('Scrollguests').style.visibility = "visible";
        document.getElementById('Scrollminprice').style.visibility = "visible";
        document.getElementById('Scrollmaxprice').style.visibility = "visible";
    }
}
</script>
</head>
<body>
<form action="trying.php" method="post">
    <img src="original1.png" onmouseover="this.src='onhover1.png'"
        onmouseout="this.src='original1.png'" onclick="ExposeList1()">

        <div id="ScrollCountry"
            style="height: 120; width: 150px; overflow: auto; border: 2px solid orange; visibility:hidden;border-radius:10px;">
            <input type="checkbox" id="scb1" name="c1" value="Mexico">Mexico<br>
            <input type="checkbox" id="scb2" name="c2" value="Belize">Belize<br>
            <input type="checkbox" id="scb3" name="c3" value="Jamaica">Jamaica<br>
            <input type="checkbox" id="scb4" name="c4" value="Thailand">Thailand<br>
            <input type="checkbox" id="scb5" name="c5" value="Turks &amp; Caicos">Turks &amp; Caicos<br>
        </div>


<br />
<div id = "Scrollguests">
<select>
<option id="n1" value="4">2 - 4</option>
<option id="n2"  value="6">4 - 6</option>
<option id="n3" value="8">6 - 8</option>
<option id = "n4" value="10">8 - 10</option>
<option id = "n5" value="30">10+</option>
</select>
</div>

<br />
<div id = "Scrollminprice">
<select>
<option id="mn1" value="200">200</option>
<option id="mn2"  value="300">300</option>
<option id="mn3" value="400">400</option>
<option id = "mn4" value="500">500</option>
<option id = "mn5" value="600">600</option>
</select>   
</div>

<br />      

<div id = "Scrollmaxprice">
<select >
<option id = "mx1" value="600">600</option>
<option id = "mx2" value="700">700</option>
<option id = "mx3" value="800">800</option>
<option id = "mx4" value="900">900</option>
<option id = "mx5" value="1000">1000</option>
</select>
</div>
<input type="submit" />
</form>
</body>
</html>
4

2 回答 2

0

您必须通过添加 css 代码将 ScrollCountry-block 元素定位在正常的元素流之外:

position: absolute;

给它。

于 2012-08-27T14:37:40.460 回答
0

我将其更改为使用display而不是visibility因为它更有意义并且效果更好。由于#ScrollCountrynow 位于复选框上方,因此无需再隐藏它们。

<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
    <script type="text/javascript">
        function ExposeList1() {
            var showstatus=document.getElementById('ScrollCountry').style.display;
            if (showstatus == 'none') {
                document.getElementById('ScrollCountry').style.display="block";
            } else {
                document.getElementById('ScrollCountry').style.display='none';
            }
        }
    </script>
    <style>
        fieldset{ border: 0; padding: 0; position: relative }
        #ScrollCountry{ 
            height: 120px; 
            width: 150px; 
            overflow: auto; 
            border: 2px solid orange;
            display:none;
            border-radius:10px;
            position: absolute;
            background: #fff;
        }
    </style>
</head>
<body>

    <form action="trying.php" method="post">
        <fieldset>
            <img src="original1.png" onmouseover="this.src='onhover1.png'" onmouseout="this.src='original1.png'" onclick="ExposeList1();return false;">

            <div id="ScrollCountry">
                <input type="checkbox" id="scb1" name="c1" value="Mexico"><label for="scb1">Mexico</label><br>
                <input type="checkbox" id="scb2" name="c2" value="Belize"><label for="scb2">Belize</label><br>
                <input type="checkbox" id="scb3" name="c3" value="Jamaica"><label for="scb3">Jamaica</label><br>
                <input type="checkbox" id="scb4" name="c4" value="Thailand"><label for="scb4">Thailand</label><br>
                <input type="checkbox" id="scb5" name="c5" value="Turks &amp; Caicos"><label for="scb5">Turks &amp; Caicos</label><br>
            </div>

            <div id="Scrollguests">
                <select>
                    <option id="n1" value="4">2 - 4</option>
                    <option id="n2"  value="6">4 - 6</option>
                    <option id="n3" value="8">6 - 8</option>
                    <option id="n4" value="10">8 - 10</option>
                    <option id="n5" value="30">10+</option>
                </select>
            </div>

            <div id="Scrollminprice">
                <select>
                    <option id="mn1" value="200">200</option>
                    <option id="mn2"  value="300">300</option>
                    <option id="mn3" value="400">400</option>
                    <option id="mn4" value="500">500</option>
                    <option id="mn5" value="600">600</option>
                </select>
            </div>

            <div id="Scrollmaxprice">
                <select >
                    <option id="mx1" value="600">600</option>
                    <option id="mx2" value="700">700</option>
                    <option id="mx3" value="800">800</option>
                    <option id="mx4" value="900">900</option>
                    <option id="mx5" value="1000">1000</option>
                </select>
            </div>
            <input type="submit">
        </fieldset>
    </form>

</body>
</html>
于 2012-08-27T15:03:17.380 回答