使用Javascript更改和加载时显示/隐藏DIV部分
Show/Hide DIV section onchange and onload with Javascript
我以为我已经想通了,但我错了。我有一个xsl表单,当表单上选择或出现特定值时,我想切换或显示/隐藏一个部分。我仅限于JavaScript,我感谢所有的帮助。
- 当用户选择选项时,隐藏的div部分显示和
- 当加载表单并且存在该值时,div部分显示
以下是我想使用的示例HTML来解决这个问题:
<select name="sbFruit" id="sbFruit" style="display:none;" title="Select your Fruit">
<xsl:variable name="sbFruit" select="Fruit" />
<xsl:for-each select="document('FRUIT_Lookups.xml')/lookups/FruitTypes/Fruit">
<xsl:variable name="optFruit" select="value" />
<option>
<xsl:if test="$sbFruit = $optFruit">
<xsl:attribute name="selected">true</xsl:attribute>
</xsl:if>
<xsl:attribute name="value">
<xsl:value-of select="value"/>
</xsl:attribute>
<xsl:value-of select="value"/>
</option>
</xsl:for-each>
</select>
<!-- Toggled Group when 'sbFruit' = Orange -->
<div id="AppleSubGroup" name="AppleSubGroup" style="display: none;>"
<label id="Orange_Fresh">Is the Orange Fresh?</label>
<input name="Fresh" type="radio" value="Yes" />Yes
<input name="Fresh" type="radio" value="No" />No
<br />
<label id="Orange_moldy">Is the Orange moldy?</label>
<input name="Red" type="radio" value="Yes" />Yes
<input name="Red" type="radio" value="No" />No
</div>
XML水果选择:
Apple
Blueberry
Orange
Pear
或简单HTML版本:
<select id="sbFruit" name="sbFruit">
<option>Apple</option>
<option>Blueberry</option>
<option>Orange</option>
<option>Pear</option>
</select>
<!-- Toggled Group when 'sbFruit' = Orange -->
<div id="AppleSubGroup" name="AppleSubGroup" style="display: none;>"
<label id="Orange_Fresh">Is the Orange Fresh?</label>
<input name="Fresh" type="radio" value="Yes" />Yes
<input name="Fresh" type="radio" value="No" />No
<br />
<label id="Orange_moldy">Is the Orange moldy?</label>
<input name="Red" type="radio" value="Yes" />Yes
<input name="Red" type="radio" value="No" />No
</div>
谢谢你的帮助!
使用jQuery和HTML版本,这应该非常容易。您分配一个处理程序来检查是否选中了该选项,如果选中了,则显示或隐藏div
$("select[name='sbFruit']").change(function(event) {
if ($(this).val() == 'Orange') {
$('#OrangeSubGroup').hide();
} else {
$('#OrangeSubGroup').show();
}
}).trigger('change');
.trigger('change')
确保检查也在加载时完成。我不知道XML表单会怎样。它可能与此代码配合使用。
看看这个小提琴,看看这是否是你需要的。这是一个非常基本的版本,但仍然有效。
基本上,您需要执行以下操作:
- 为所有选项指定一个
value
属性(例如为选项Apple
指定AppleSubGroup
)。为每个选项分配的值必须与包含相关内容的Div的ID匹配。否则,这将不起作用 - 指定两个类,即
hidden
和visible
,规则分别为display:none
和display:block
。当分配给您的子组时,将显示/隐藏它们 - 编写一个JS函数,根据选择将隐藏/可见类分配给子组。我假设你想要一个只有JS的版本(如果你对jQuery满意,请参阅Amboos的回答)
- 使用
window.onload = showHide;
在页面加载时调用此函数。这会将与默认选定值相对应的子组设置为在页面加载时可见 - 将
onChange="showHide();"
属性添加到select
标记中。这将在每次修改选择时调用该函数
注意:我已经为您的子组部分添加了一个带有id="SubGroup"
的包装器div。
window.onload = showHide;
function showHide(){
var el = document.getElementById("sbFruit");
var selectedVal = el.options[el.selectedIndex].value;
var subGroupEl = document.getElementById("SubGroup").getElementsByTagName("div");
for(var i=0; i<subGroupEl.length; i++){
subGroupEl[i].className = "hidden";
}
document.getElementById(selectedVal).className = "visible";
}
相关文章:
- 在jquery中为显示/隐藏设置cookie
- PHP Javascript显示/隐藏按钮不工作
- 打开/关闭按钮以显示/隐藏内容
- 显示隐藏复选框
- 在bootstrap中显示隐藏特定的li
- JQuery上下文菜单显示/隐藏问题
- JQuery在单击时停止显示/隐藏
- HTML5在提交并显示所需标签后显示隐藏的表单元素
- 使用 jQuery 切换显示/隐藏
- 显示/隐藏有关模型更改的指令内容
- Bootstrap在页面加载缓慢时会立即显示隐藏的模式对话框
- 根据特定条件使用ng显示/ng隐藏来显示/隐藏元素
- 显示/隐藏不起作用
- 使用ng-hide根据条件显示/隐藏按钮
- 仅在第一个结果中显示/隐藏MySQL结果函数
- 显示/隐藏http://ftp链接
- 在显示/隐藏中单击时删除的文本
- 是否可以在不重新渲染的情况下显示/隐藏父对象中的元素
- 将页面内容向左移动时显示/隐藏右侧面板
- 显示/隐藏将不会加载