如何使用javaScript进行多重选择

如何使用javaScript进行多重选择,javascript,html,Javascript,Html,我正在尝试使用JavaScript进行多次选择。但我不能工作,我怎么能解决这个问题? 我是这样做的 var expanded=false; 函数显示复选框(){ var复选框=document.getElementById(“复选框”); 如果(!展开){ 复选框.style.display=“block”; 扩展=真; }否则{ 复选框.style.display=“无”; 扩展=假; } } .multiselect{ 宽度:200px; } .选择框{ 位置:相对位置; } .选择框选择

我正在尝试使用JavaScript进行多次选择。但我不能工作,我怎么能解决这个问题? 我是这样做的

var expanded=false;
函数显示复选框(){
var复选框=document.getElementById(“复选框”);
如果(!展开){
复选框.style.display=“block”;
扩展=真;
}否则{
复选框.style.display=“无”;
扩展=假;
}
}
.multiselect{
宽度:200px;
}
.选择框{
位置:相对位置;
}
.选择框选择{
宽度:100%;
字体大小:粗体;
}
.多选{
位置:绝对位置;
左:0;右:0;顶部:0;底部:0;
}
#复选框{
显示:无;
边框:1px#dadada实心;
}
#复选框标签{
显示:块;
}
#复选框标签:悬停{
背景色:#1e90ff;
}

复选框1
第一个复选框
复选框2
第一个复选框
复选框3
第一个复选框

多个元素不能有相同的id。这是无效的。但是,当您调用
getElementById()
1st元素时,会使用它。这就是为什么在您的示例中只有1st元素展开和折叠

下面是一个例子。 在本例中,我将一个参数传递给
showcheckbox
方法。因此,我们可以选择正确的
复选框
。我们还必须分别存储3个元素的状态

js

您还可以在调用处理程序时传递“event”属性,如:

div class=“selectBox”onclick=“显示复选框(事件)”

并更改javascript,如:

var expanded = false;
function showCheckboxes(ev) {
    console.log("ev", ev);

    var checkboxes = ev.currentTarget.parentElement.lastElementChild;
    if (!expanded) {
        checkboxes.style.display = "block";
        expanded = true;
    } else {
        checkboxes.style.display = "none";
        expanded = false;
    }
}

HTML中的标识符必须是唯一的。它将使HTML文档无效3个id相同的div。这是无效的。当您调用get id时,第一个是takeni。我需要动态多重选择。如何实现?有很多方法。您可以获取clicked元素。或者您可以将参数传递给
显示复选框(2)
。id必须是唯一的。您应该避免内联事件绑定。jQuery可以方便地处理复杂的DOM操作。.如何获取多个输入框的输入值?@noushidp我不了解它?您可以澄清我需要获取复选框的值吗。@noushidp您可以使用索引i获取它。看到这将警告
复选框内的复选框值
div如何获取多个输入框的值在一个复选框中?当您在“showcheckbox(event)”函数中将事件对象作为参数发送时,您可以使用:ev.currentTarget访问发生单击的元素,然后使用:ev.currentTarget.parentElement.lastElementChild获取其父节点的最后一个子节点,该子节点将是id=“checkbox”的div,您可以执行函数的其余部分
var expanded = false;
function showCheckboxes(ev) {
    console.log("ev", ev);

    var checkboxes = ev.currentTarget.parentElement.lastElementChild;
    if (!expanded) {
        checkboxes.style.display = "block";
        expanded = true;
    } else {
        checkboxes.style.display = "none";
        expanded = false;
    }
}