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
)中?