我现在有一个HTML表单(由PHP生成)具有以下结构的多个实例的形式的元素:隐藏/显示当输入检查
function show(elem, show){
var elements =
elem.parentNode.parentNode.parentNode.getElementsByClassName("hidden");
var i;
for(i=0; i<elements.length; i++){
\t if(show){
\t \t elements[i].style.display = "initial";
\t }
\t else{
\t \t elements[i].style.display = "none";
\t }
}
}
.hidden {
display: none;
width: 100%;
padding: 0px;
margin: 2px;
overflow: hidden;
}
<fieldset>
<legend>Something</legend>
<ul>
\t <li>
\t <input type="radio" name="X" value="No" onchange="show(this, false)">
\t <label>No</label>
\t </li>
\t <li>
\t <input type="radio" name="X" value="Yes" onchange="show(this, true)">
\t <label>Yes</label>
\t </li>
</ul>
\t
\t <p class="hidden">
\t Elements
</p>
<fieldset class="hidden">
\t Elements
</fieldset>
</fieldset>
的目标是具有class="hidden"
元素显示何时选中“是”,显示“否”时隐藏,默认情况下隐藏。
问题是,现在窗体的状态是从数据库加载的,并且可以在加载时检查“是”(在这种情况下,html将是<input type="radio" name="X" value="Yes" onchange="show(this, true)" checked>
),所以我需要某种onload(也许通过jQuery )函数将检查是否被选中,如果是,将显示隐藏的元素。由于我的网页设计技能相当低,所以我几乎不知如何继续。
我完全知道我的js和整体设计相当混乱,所以如何改进它的任何建议将非常感激。
编辑
由于乔伊·平托的建议,这里是如何它已经最终完成(加入以下JS):
$(document).ready(function(){
var show=document.getElementsByClassName("shower");
for(i=0;i<show.length;i++){
if(show[i].checked){
mostrar(show[i],true);
}
}
}
);
过程中添加class="shower"
收音机的是输入的和。
这是一个好主意,但是在整个表格中有相同结构的多个实例,并且为它们中的每一个分配一个不同的ID会是过度的;有没有办法通过循环检查每个“show”类然后执行相同的操作? – LordHieros
是的,可以通过使用类名而不是id来处理。你需要按类名取单选按钮并使用相同的逻辑 –
由于我对js不熟悉,花了一段时间,但你的建议起到了魅力的作用。谢谢。 – LordHieros