【发布时间】:2019-12-09 16:13:50
【问题描述】:
我正在制作一个包含复选框和输入文本的表单。当一个复选框被选中时,相关的文本应该出现在它旁边。这是我当前的代码,但它不起作用: HTML:
<input type="checkbox" class="box1" onchange="showHide()"> Option 1
<div class="hid box1">
<select name="option1">
<option value="yes">Yes</option>
<option value="no">No</option>
</select>
Comments: <input type="text" name="option1Comment">
</div>
CSS:
.hid {
display: none;
}
JavaScript:
function showHide() {
var checkBox = document.getElementByClassName(this);
var text = document.getElementByClassName(this "hid");
if (checkBox.checked == true){
text.style.display = "block";
} else {
text.style.display = "none";
}
}
【问题讨论】:
-
没有
getElementByClassName -
选择使用
querySelectors使事情更容易阅读和理解 -
请务必先检查浏览器控制台是否有错误。没有
getElementByClassName,函数名为getElementsByClassName。因此,您还需要获取返回列表的第一个元素:var checkBox = document.getElementsByClassName("box1")[0]; -
还有需要改进的地方(不相关):检查复选框是否被选中的 if 语句不需要
== true并且您可以编写内联 if 事实上。 -
我想尽量避免使用索引,这就是为什么我选择了 2 个不同的类。 “隐藏”类应用于任何我想保持隐藏直到被选中的 div,然后第二个类将 div 与同一类的复选框配对。
标签: javascript html css forms checkbox