美好的一天,
我正在为一个有趣的小方项目工作,为我自学JavaScript和解决我对古老的俗气科幻电影的热爱(神的村庄,他们!,狼蛛,50英尺女人的攻击) ,令人难以置信的缩小的人,神奇的航程,八条腿的怪胎)。我想制作一个程序,让你输入一些基本的统计数据,然后按一个按钮来显示理论上这个人在比例上的比例。
那说我还在嘲笑这个项目,并且想要获得一些基本的功能。我想提一个选项,在单选按钮切换文本/选择字段将是可见的或不可见的。我完全不知道如何在点击单选按钮上隐藏字段。我知道我需要标题中的JavaScript来管理隐藏字段的函数。我也在玩弄整个桌子行消失并根据需要重新出现。
我看过Show/hide drop down when radio button is selected。我理解标题正在做什么,但我不知道如何将它实现到我的部分,在这个例子中的头发。是否有更好的方法试图隐藏第一次编码器的价值?并提前感谢您提供的任何帮助。
- Edit--
感谢大家的帮助,我无法在工作中编辑代码,我已经使用我使用的解决方案更新,以便Div将包含在代码中。很抱歉忘了早些时候。
<html>
<head>
<title>Size Converter</title>
<script language="javascript" type="text/javascript">
function setVisible(id, visible) {
var o = document.getElementById(id); //get the element based on it's id
//if the element exists then set it's visiblity
if (isElement(o)) {
o.style.visibility = visible ? 'visible' : 'hidden';
} else {
alert("Element with id '" + id + "' not found.");
}
}
function setDisplay(id, visible) {
var o = document.getElementById(id);
if (isElement(o)) {
o.style.display = visible ? 'block' : 'none';
} else {
alert("Element with id '" + id + "' not found.");
}
}
function isElement(obj) {
var returnValue = false;
if (obj == undefined || obj == null) {
returnValue = false;
} else {
returnValue = true;
}
return returnValue;
}
</script>
</head>
<style>
BODY {
background-color: #dbdbdb;
}
#Subject, #CG {
border: solid 1px #000000;
padding: 2px;
}
</style>
<br>
<h1><center>Pre Transformation</center></h1>
<center><form>
<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
<tbody>
<tr>
<td style="width:50%">
<h3>
Subject</h3>
</td>
<td>
</td>
<td style="width:50%">
<h3>
Control Group</h3>
</td>
</tr>
<tr>
<td>
<div>
Sex: <input type='radio' name='subjectsex' value='male' onclick="setVisible('Subject', false);" />Male
<input type='radio' name='subjectsex' value='female' onclick="setVisible('Subject', true);" />Female
</div></td>
<td>
</td>
<td>
<div>
Sex: <input type='radio' name='CGsex' value='male' onclick="setVisible('CG', false);" />Male
<input type='radio' name='CGsex' value='female' onclick="setVisible('CG', true);" />Female
</div></td>
</tr>
<tr>
<td>
Height: <input size="2" value="5" type="text" /> Feet <input size="2" value="6" type="text" />Inches</td>
<td>
</td>
<td>
Height: <input size="2" value="5" type="text" /> Feet <input size="2" value="6" type="text" />Inches</td>
</tr>
<tr>
<td>
Weight: <input size="2" value="130" type="text" /> pounds</td>
<td>
</td>
<td>
Weight: <input size="2" value="130" type="text" /> pounds</td>
</tr>
<tr>
<td>
Measurements: <input size="2" type="text" /> bust/chest <input size="2" type="text" /> hips <input size="2" type="text" />waist</td>
<td>
</td>
<td>
Measurements: <input size="2" type="text" /> bust/chest <input size="2" type="text" /> hips <input size="2" type="text" />waist</td>
</tr>
<tr>
<td> <div id="Subject">
Hair Length: <select name="hair">
<option value=".5">Short/Pixie</option>
<option value="1.0">Medium/Shoulder</option>
<option value="1.5"selected="selected">Mid Back</option>
<option value="2.0" >Waist Length</option></select></div></td>
<td>
</td>
<td><div id="CG">
Hair Length: <select name="hair">
<option value=".5">Short/Pixie</option>
<option value="1.0">Medium/Shoulder</option>
<option value="1.5"selected="selected">Mid Back</option>
<option value="2.0" >Waist Length</option></select></div></td>
</tr>
<tr>
<td>
Leg Percent: <input size="2" type="text" /></td>
<td>
</td>
<td>
Leg Percent: <input size="2" type="text" /></td>
</tr>
</tbody>
</table>
<hr>
<p style="text-align: center;">
<input size="2" type="text" />Feet <input size="2" type="text" /> inches</p>
<p style="text-align: center;">
<input type="button" value="Transform!" /></p>
<hr>
<h1><center>Post Transformation</center></h1>
<table border="0" cellpadding="0" cellspacing="0" style="width:100%">
<tbody>
<tr>
<td style="width:50%">
<h3>
Subject</h3>
</td>
<td>
</td>
<td style="width:50%">
<h3>
Control Group</h3>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>
</td>
<td>
</td>
<td>
</td>
</tr>
</tbody>
</table>
</body>
</html>
答案 0 :(得分:0)
最佳实践是jQuery on change function,你可以监听change事件并查看是否选中了复选框以根据响应进行操作
$(".checkbox").change(function() {
if(this.checked) {
$("#myelement").fadeIn();
} else {
$("#myelement").fadeOut();
}
});
答案 1 :(得分:0)
除了这个主要错误之外,它几乎正常工作:没有显示Div1和Div2 。 请在此处查看fiddle。
刚刚添加
<div id="Div1">This is div 1 </div>
<div id="Div2">This is div 2 </div>
代码
答案 2 :(得分:0)
有些事情,首先我清理了你的JS并在方法中封装了你的空检查。我还添加了丢失的标记元素,我认为这些元素在你的OP中被忽略了。
这是一个小提琴:http://jsfiddle.net/gev4kwnf/5/
JavaScript现在看起来像这样:
function setVisible(id, visible) {
var o = document.getElementById(id); //get the element based on it's id
//if the element exists then set it's visiblity
if (isElement(o)) {
o.style.visibility = visible ? 'visible' : 'hidden';
} else {
alert("Element with id '" + id + "' not found.");
}
}
function setDisplay(id, visible) {
var o = document.getElementById(id);
if (isElement(o)) {
o.style.display = visible ? 'block' : 'none';
} else {
alert("Element with id '" + id + "' not found.");
}
}
function isElement(obj) {
var returnValue = false;
if (obj == undefined || obj == null) {
returnValue = false;
} else {
returnValue = true;
}
return returnValue;
}
答案 3 :(得分:0)
如果您想要无库存的事件,有很多方法可以做到这一点(假设您的元素中包含ID“Div1”和“Div2”)。
这是一个。它演示了一种比getElementByID
更好的方法来查找DOM元素:
var subMale = document.querySelector('input[name=subjectsex][value=male]'),
subFemale = document.querySelector('input[name=subjectsex][value=female]'),
cgMale = document.querySelector('input[name=CGsex][value=male]'),
chFemale = document.querySelector('input[name=CGsex][value=female]'),
maleDivChange = function() {
setVisible('Div1', true);
setVisible('Div2', false);
},
femaleDivChange = function() {
setVisible('Div1', false);
setVisible('Div2', true);
};
subMale.addEventListener('click', maleDivChange);
subFemale.addEventListener('click', femaleDivChange);
cgMale.addEventListener('click', maleDivChange);
chFemale.addEventListener('click', femaleDivChange);
这适用于现代浏览器,包括IE9。如果你想早点去做,还有一些额外的工作要做。
它有相当多的问题(例如,如果Div1
和Div2
实际上在主题组和对照组之间共享,点击主题男性,CG女性,然后点击主题男性再次将使“Div1”可见并且“Div2”不可见。此外,它是相当蛮力的,并且不会扩展。如果它是我实际在做的事情,我可能会通过添加和删除CSS类来进行可见性更改来自“Div1”和“Div2”元素(我可能会为每个发现标记一些其他CSS类,如果我找到任何其他与性别相关的字段,这也会使解决方案可扩展。
以下是包含上述代码的fiddle。