Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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/backbone.js/2.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 我如何使下拉框在没有JS的情况下工作?_Javascript_Html_Css - Fatal编程技术网

Javascript 我如何使下拉框在没有JS的情况下工作?

Javascript 我如何使下拉框在没有JS的情况下工作?,javascript,html,css,Javascript,Html,Css,我在一个学校项目中使用javascript制作了下拉按钮,但任务要求所有与javascript相关的东西都应该在没有javascript的情况下工作。如何使这些按钮在使用和不使用javascript的情况下都能工作。我希望它们在JS不在场时一直打开 编辑:忘记在css中添加CONTAINERWARD 代码如下: HTML: JS: var acc=document.getElementsByClassName(“下拉菜单”); var i; 对于(i=0;i

我在一个学校项目中使用javascript制作了下拉按钮,但任务要求所有与javascript相关的东西都应该在没有javascript的情况下工作。如何使这些按钮在使用和不使用javascript的情况下都能工作。我希望它们在JS不在场时一直打开

编辑:忘记在css中添加CONTAINERWARD

代码如下:

HTML:

JS:

var acc=document.getElementsByClassName(“下拉菜单”);
var i;
对于(i=0;i

这不是一个完整的答案,而是一个能为你指明正确方向的答案(希望在此过程中能学到更多)


您需要一些可以在两个“状态”之间切换的东西来表示下拉菜单的“打开”和“关闭”行为,这些东西在没有javascript的情况下进行本机操作,这听起来像是一个复选框可能有一些用处?您可以在“选中”和“未选中”之间切换,有一个css伪类“:checked”,您可以使用它来控制打开和关闭样式。

尝试此复选框方法。您需要像这样修改html

<div class="ContainerReward">
    <label for="tenkm" class="dropdown">10km/week</label>
    <input class="dropdown_input" type="checkbox" id="tenkm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="twentykm" class="dropdown">20km/week</label>
    <input class="dropdown_input" type="checkbox" id="twentykm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="thirtykm" class="dropdown">30km/week</label>
    <input class="dropdown_input" type="checkbox" id="thirtykm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="fortykm" class="dropdown">40km/week</label>
    <input class="dropdown_input" type="checkbox" id="fortykm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="fiftykm" class="dropdown">50km/week</label>
    <input class="dropdown_input" type="checkbox" id="fiftykm" />
    <div class="panel">
        <p>K</p>
    </div>
</div>
.ContainerReward {
display: grid;
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 2;
grid-row-end: 6;
margin: 10px;
border-radius: 5px;
background-color: transparent;
}
.dropdown {
margin: 2px;
border-radius: 5px;
background-color: #BCEBCB;
color: #000000;
cursor: pointer;
padding:  18px;
text-align: center;
border: none;
outline: none;
transition: 0.4s;
}

.active, .dropdown:hover {
    background-color: #93B48B;
}
.dropdown_input {
  display: none;
}
.dropdown_input:not(:checked) + .panel {
    margin: 2px;
    border-radius: 5px;
    padding: 0 18px;
    background-color: #F7FFF6;
    display: none;
    overflow: hidden;
}
这应该适用于您的用例

这是这个例子的用笔

您还可以使用本机
元素,这些元素正是用于此目的的。它甚至可以自动访问。不需要JavaScript


啊,我明白了,显然我不识字。你要找的是手风琴,不是下拉式的。然后我建议使用
。它们在大多数现代浏览器中也能正常工作。

谢谢您的回答!我以前也尝试过类似的复选框。当处于移动模式时,它位于带有下拉菜单的导航栏上。问题是我需要为复选框按钮创建一个带有CSS的汉堡包菜单。我希望整个下拉按钮是可点击的。这可以通过复选框方法实现。您可以使复选框填充其父容器。这样,整个容器都可以点击,从而激活复选框。非常感谢!但是我有一个小问题。当我使用此代码并在Chrome中运行网站时,在我单击每个按钮后,复选框开始出现在每个按钮下方,即使它们没有出现在codepen上。这应该适用于所有浏览器,请尝试刷新您的选项卡。如果这有帮助,请接受答案。它现在起作用了。我这边的代码有问题。但是,我忘了提到,单击按钮后出现的面板框是透明的,而不是白色的。我忘了在CSS中添加一部分代码,所以我要马上更新这篇文章。我已经更新了答案和钢笔。您需要添加显示:网格;否则所有其他网格属性将无法使用这些属性。不幸的是,尽管我使用了显示网格,但面板仍然是透明的。。。
var acc = document.getElementsByClassName("dropdown");
        var i;

        for (i = 0; i < acc.length; i++) {
            acc[i].addEventListener("click", function() {
                this.classList.toggle("active");
                var panel = this.nextElementSibling;
                if (panel.style.display === "block") {
                    panel.style.display = "none";
                } else {
                    panel.style.display = "block";
                }
            });
        }
<div class="ContainerReward">
    <label for="tenkm" class="dropdown">10km/week</label>
    <input class="dropdown_input" type="checkbox" id="tenkm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="twentykm" class="dropdown">20km/week</label>
    <input class="dropdown_input" type="checkbox" id="twentykm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="thirtykm" class="dropdown">30km/week</label>
    <input class="dropdown_input" type="checkbox" id="thirtykm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="fortykm" class="dropdown">40km/week</label>
    <input class="dropdown_input" type="checkbox" id="fortykm" />
    <div class="panel">
        <p>K</p>
    </div>
    <label for="fiftykm" class="dropdown">50km/week</label>
    <input class="dropdown_input" type="checkbox" id="fiftykm" />
    <div class="panel">
        <p>K</p>
    </div>
</div>
.ContainerReward {
display: grid;
grid-column-start: 3;
grid-column-end: 4;
grid-row-start: 2;
grid-row-end: 6;
margin: 10px;
border-radius: 5px;
background-color: transparent;
}
.dropdown {
margin: 2px;
border-radius: 5px;
background-color: #BCEBCB;
color: #000000;
cursor: pointer;
padding:  18px;
text-align: center;
border: none;
outline: none;
transition: 0.4s;
}

.active, .dropdown:hover {
    background-color: #93B48B;
}
.dropdown_input {
  display: none;
}
.dropdown_input:not(:checked) + .panel {
    margin: 2px;
    border-radius: 5px;
    padding: 0 18px;
    background-color: #F7FFF6;
    display: none;
    overflow: hidden;
}