我有两个单选按钮和一个div:
<input type='radio' name='option' value='test1' />
<input type='radio' name='option' value='test2' />
<div style="display:none">
Hidden info
</div>
我想要的是当点击第二个单选按钮时显示div内的信息,但是当他们切换到另一个单选按钮时我希望它消失。我还想在原始JavaScript中执行此操作。
我该怎么做?
答案 0 :(得分:1)
您可以在两个单选按钮上挂钩click
事件,然后使用您感兴趣的属性的checked
属性来确定div
来自.style.display
的可见性其div
属性(“无”表示隐藏,“”表示默认[块])。
您可以通过多种方式访问单选按钮和id
的DOM元素。最简单的方法之一就是给它们<input id="rdoTest1" type='radio' name='option' value='test1' />
<input id="rdoTest2" type='radio' name='option' value='test2' />
<div id="targetDiv" style="display:none">
Hidden info
</div>
值:
(function() {
var rdoTest1 = document.getElementById("rdoTest1"),
rdoTest2 = document.getElementById("rdoTest2"),
targetDiv = document.getElementById("targetDiv");
rdoTest1.onclick = rdoTest2.onclick = handleClick;
function handleClick() {
targetDiv.style.display = rdoTest2.checked ? "" : "none";
}
})();
然后就是(live example):
body
确保该脚本位于window.onload
元素的末尾,或将其包装在id
或类似的处理程序中。
但是如果您不能或不想使用name
值,则还有很多其他方法可以找到元素 - getElementsByTagName,然后通过{{1}}等找到它们。
方便的参考资料:
答案 1 :(得分:0)
这是我的直接,没有测试它,但我认为它应该做的伎俩
<script type="text/javascript">
function toggleDiv() {
var e = document.getElementById('toggle');
if(e.style.display == 'block') {
e.style.display = 'none';
} else {
e.style.display = 'block';
}
}
</script>
<input type='radio' name='option' value='test1' onclick="toggleDiv()" />
<input type='radio' name='option' value='test2' onclick="toggleDiv()" />
<div id="toggle" style="display:none">
Hidden info
</div>
答案 2 :(得分:0)
在输入元素上添加和ID:
<input type='radio' name='option' id="option_1" value='test1' />
<input type='radio' name='option' id="option_2" value='test2' />
<div style="display:none" id="message">Hidden info</div>
使用javascript引用每个单选按钮,并根据其状态分配可见性:
option1 = document.getElementById("option_1");
option2 = document.getElementById("option_2");
message = document.getElementById("message");
option1.onclick = function(){
message.style.display = "block";
}
option2.onclick = function(){
message.style.display = "none";
}
答案 3 :(得分:0)
<script type="text/javascript">
function eventHandler (e) {
if (! e)
e = event;
return e.target || e.srcElement;
}
function handleDivShowing(e) {
var radio = eventHandler (e);
var div = document.getElementById('divToShow');
if(radio.value == 'test2') {
div.style.display = 'block';
}
else {
div.style.display = 'none';
}
}
<input type='radio' name='option' value='test1' onclick="handleDivShowing(event)" />
<input type='radio' name='option' value='test2' onclick="handleDivShowing(event)" />
<div id="divToShow" style="display:none">
Hidden info
</div>
通过事件处理,您可以使用更通用的解决方案,对多个案例有效。 问候。
答案 4 :(得分:0)
以下是您需要的代码:
<html>
<head>
<script type="text/javascript">
function showhide()
{
var opt2 = document.getElementById("option_2");
var msg = document.getElementById("message");
if(opt2.checked)
{
msg.style.visibility = "visible";
}
else {
msg.style.visibility = "hidden";
}
}
</script>
</head>
<body>
<!--The ID is not necessary in the first radio button-->
<input type="radio" name="option" value="test1" id="option_1" onclick="showhide()" />
<input type="radio" name="option" value="test2" id="option_2" onclick="showhide()" />
<div style="visibility:hidden;" id="message">Hidden info</div>
</body>
</html>
答案 5 :(得分:0)
<input type='radio' name='option' value='test1' onchange="((this.checked==true)?(document.getElementById('yourdiv').style.display='none'):(document.getElementById('yourdiv').style.display='block'))" />
<input type='radio' name='option' value='test2' onchange="((this.checked==true)?(document.getElementById('yourdiv').style.display='block'):(document.getElementById('yourdiv').style.display='none'))" />
<div id="yourdiv" style="display:none">
Hidden info
</div>
它有点长但是有效。 - > Live Demo <