Javascript:获取带有特定“标记”的radiobutton标签;至于;标签中

Javascript:获取带有特定“标记”的radiobutton标签;至于;标签中,javascript,input,label,Javascript,Input,Label,我有这样一个表单元素: <div id="myformelement"> <input type="radio" id="option1"> <label for="option2">Option 1</label> <input type="radio" id="option2"> <label for="option2">Option 2</label> <input t

我有这样一个表单元素:

<div id="myformelement">
   <input type="radio" id="option1">
   <label for="option2">Option 1</label>
   <input type="radio" id="option2">
   <label for="option2">Option 2</label> 
   <input type="radio" id="option3">
   <label for="option3">Option 3</label> 
   <input type="radio" id="option4">
   <label for="option4">Option 4</label>  
</div>

选择1
选择2
选择3
选择4
我想隐藏输入字段“option2”和“option3”及其标签

我可以通过寻址id来隐藏输入项目符号。不幸的是,输入字段的对应标签只有一个带有id的“for”标记

如何使用javascript(无jquery)实现这一点

我发现了这个问题(),但这似乎只适用于ID中的一个标签,我不能使用它

提前谢谢! 亲切问候,, Malte

您可以使用
nextSibling

var rdo = document.getElementById("option2");
var lbl;

rdo.style.display = "none";
for (lbl = rdo.nextSibling; lbl && lbl.nodeName.toUpperCase() !== "LABEL"; lbl = lbl.nextSibling) {
}
if (lbl) {
    lbl.style.display = "none";
}
但我有一个更好的选择:似乎这是一个保守的秘密,
label
元素可以包含它们相关的
输入,而当它们不包含时,则根本不需要
for
。因此,如果您将HTML更改为:

<div id="myformelement">
   <label><input type="radio" id="option1"> Option 1</label>
   <label><input type="radio" id="option2"> Option 2</label> 
   <label><input type="radio" id="option3"> Option 3</label> 
   <label><input type="radio" id="option4"> Option 4</label>  
</div>

您只需找到
输入
,遍历到它的父项,即
标签
,然后隐藏它(这也将隐藏
输入)。

在纯JavaScript中,您可以使用:


+1当然,前提是您不需要支持IE7或更早版本@关心IE7及更早版本的T.J.Crowder;)@愿景:亚洲确实有相当多的人,特别是中国。但是,嘿,我们都可以安全地忽略13亿人口中的20%左右,对吗?;-)(严肃地说:很多网站都可以[当然是我参与过的所有网站],如果它们只使用英语的话。:-)@T.J.Crowder我想强迫人们进行更新从来都不是坏事:)我同意,说服人们使用现代浏览器是一个优先考虑的问题。无论如何,此解决方案也有效,标签中的+1输入可能比单独隐藏元素更好地解决问题。
document.getElementById("option2").parentNode.style.display = "none";
document.querySelector("label[for='option2']").style.display = "none";