JavaScript数组需要显示许多隐藏字段

JavaScript数组需要显示许多隐藏字段,javascript,arrays,Javascript,Arrays,函数show1(){ if(document.getElementById(“check1”).checked==true){ document.getElementById(“info1”).style.display=“inline”; }否则{ if(document.getElementById(“check1”).checked==false) document.getElementById(“info1”).style.display=“无”; } } #信息1,#信息2{ 显示:无


函数show1(){
if(document.getElementById(“check1”).checked==true){
document.getElementById(“info1”).style.display=“inline”;
}否则{
if(document.getElementById(“check1”).checked==false)
document.getElementById(“info1”).style.display=“无”;
}
}
#信息1,#信息2{
显示:无;
}   
我需要做的大约20次是显示隐藏字段info1、info2等。选中check1、check2时。

我已经更新了您的:

而不是创建一个if。。。else块对于每个复选框,这变得很难维护,我已经通过自定义属性data info id将每个复选框与其DIV关联,该id设置为前面提到的DIV的id

我将“change”事件绑定到文档(事件委派),当它触发时,我检查源元素是否具有数据信息id属性。然后,我获取具有这样id的DIV,并根据checked属性的值显示或隐藏它


通过自定义属性这样做的明显优点是,您不依赖于div的位置,您可以通过声明的方式更改显示哪个div的检查,只需更改HTML。

首先,最好在Javascript中找到处理程序,而不是内联事件

第二,将所有输入都放在同一个类中

具有将存储相应输入消息的数据-*属性

你看起来像

HTML

<div class="container">
    <div>
        <input type="checkbox" id="check1" name="check1" value="" data-id="info1" class="checkbox"/>
        <label for="check1">Click here for more information</label>
    </div>
     <div id="info1" class="info">Hidden information here will now appear onclick check1</div>
</div>
<div class="container">
    <div>
        <input type="checkbox" id="check2" name="check3" value="" data-id="info2" class="checkbox"/>
        <label for="check2">Click here for more information</label>
    </div>
     <div id="info2" class="info">Hidden information here will now appear onclick check2</div>
</div>
<div class="container">
    <div>
        <input type="checkbox" id="check3" name="check3" value="" data-id="info3" class="checkbox"/>
        <label for="check3">Click here for more information</label>
    </div>
     <div id="info3" class="info">Hidden information here will now appear onclick check3</div>
</div>
<div> 
    <input type="checkbox" id="check1" name="check1" value="" />
    <label for="check1"> Click here for more information</label>
    <div id="info1">Hidden information here will now appear onclick </div>
</div>

 <div> 
    <input type="checkbox" id="check2" name="check2" value=""/>
    <label for="check2"> Click here for more information</label>
    <div id="info2">Hidden information here will now appear onclick </div>
</div>
<input type="checkbox" data-enable="info0" name="check[]"/>
<input type="text" id="info0" name="info[]"/>

单击此处了解更多信息
这里的隐藏信息现在将在单击check1时显示
单击此处了解更多信息
这里的隐藏信息现在将在单击check2时显示
单击此处了解更多信息
这里的隐藏信息现在将在单击check3时显示
JS

// Get all the checkbox elements

var elems = document.getElementsByClassName('checkbox');

// iterate over and bind the event
for(var i=0; i< elems.length; i++) {
     elems[i].addEventListener('change', show);   
}

function show() {
    // this corresponds to the element in there
    // Get the info attribute id
    var infoId = this.getAttribute('data-id');
    if (this.checked) {
        document.getElementById(infoId).style.display = "inline";
    } else {
       document.getElementById(infoId).style.display = "none";
    }
}
input[type=checkbox] ~ div {
    display: none;
}

input[type=checkbox]:checked ~ div {
    display: block;
}
//获取所有复选框元素
var elems=document.getElementsByClassName('checkbox');
//迭代并绑定事件
对于(变量i=0;i


这是实现这一点的一种方法。

也许您正在寻找一个只使用javascript的解决方案,但CSS中有一个非常简单的解决方案

HTML

<div class="container">
    <div>
        <input type="checkbox" id="check1" name="check1" value="" data-id="info1" class="checkbox"/>
        <label for="check1">Click here for more information</label>
    </div>
     <div id="info1" class="info">Hidden information here will now appear onclick check1</div>
</div>
<div class="container">
    <div>
        <input type="checkbox" id="check2" name="check3" value="" data-id="info2" class="checkbox"/>
        <label for="check2">Click here for more information</label>
    </div>
     <div id="info2" class="info">Hidden information here will now appear onclick check2</div>
</div>
<div class="container">
    <div>
        <input type="checkbox" id="check3" name="check3" value="" data-id="info3" class="checkbox"/>
        <label for="check3">Click here for more information</label>
    </div>
     <div id="info3" class="info">Hidden information here will now appear onclick check3</div>
</div>
<div> 
    <input type="checkbox" id="check1" name="check1" value="" />
    <label for="check1"> Click here for more information</label>
    <div id="info1">Hidden information here will now appear onclick </div>
</div>

 <div> 
    <input type="checkbox" id="check2" name="check2" value=""/>
    <label for="check2"> Click here for more information</label>
    <div id="info2">Hidden information here will now appear onclick </div>
</div>
<input type="checkbox" data-enable="info0" name="check[]"/>
<input type="text" id="info0" name="info[]"/>

查找具有
data enable
属性的输入,该属性与显示/隐藏的元素的
id
匹配

HTML

<div class="container">
    <div>
        <input type="checkbox" id="check1" name="check1" value="" data-id="info1" class="checkbox"/>
        <label for="check1">Click here for more information</label>
    </div>
     <div id="info1" class="info">Hidden information here will now appear onclick check1</div>
</div>
<div class="container">
    <div>
        <input type="checkbox" id="check2" name="check3" value="" data-id="info2" class="checkbox"/>
        <label for="check2">Click here for more information</label>
    </div>
     <div id="info2" class="info">Hidden information here will now appear onclick check2</div>
</div>
<div class="container">
    <div>
        <input type="checkbox" id="check3" name="check3" value="" data-id="info3" class="checkbox"/>
        <label for="check3">Click here for more information</label>
    </div>
     <div id="info3" class="info">Hidden information here will now appear onclick check3</div>
</div>
<div> 
    <input type="checkbox" id="check1" name="check1" value="" />
    <label for="check1"> Click here for more information</label>
    <div id="info1">Hidden information here will now appear onclick </div>
</div>

 <div> 
    <input type="checkbox" id="check2" name="check2" value=""/>
    <label for="check2"> Click here for more information</label>
    <div id="info2">Hidden information here will now appear onclick </div>
</div>
<input type="checkbox" data-enable="info0" name="check[]"/>
<input type="text" id="info0" name="info[]"/>

Javascript

function toggleEl(evt) {
    var checkbox = evt.target;
    var target = checkbox.getAttribute('data-enable');
    var targetEl = document.getElementById(target);

//  if checked, use backed-up type; otherwise hide
    targetEl.type = (checkbox.checked)
        ? targetEl.getAttribute('data-type')
        : 'hidden';
}

var inputs = document.getElementsByTagName('input');

for(var i=0,l=inputs.length;i<l;i++) {
    var input = inputs[i];
    var target = input.getAttribute('data-enable');

    if(target!==null) {
        var targetEl = document.getElementById(target);

    //  back-up type
        targetEl.setAttribute('data-type',targetEl.type);

    //  hide it if the checkbox is not checked by default
        if(!input.checked)
            { targetEl.type = 'hidden'; }

    //  add behavior
        input.addEventListener('change',toggleEl,false);
    }
}
功能切换(evt){
var复选框=evt.target;
var target=checkbox.getAttribute('data-enable');
var targetEl=document.getElementById(目标);
//如果选中,则使用备份类型;否则隐藏
targetEl.type=(选中复选框)
?targetEl.getAttribute('数据类型')
:“隐藏的”;
}
var inputs=document.getElementsByTagName('input');
对于(var i=0,l=inputs.length;i检查以下内容

/=version)bod.className=className;
}
职能E(E){
返回单据getElementById(e);
}
//]]>
//

每个复选框及其各自的字段是否将位于共享元素(即
li
)中?