2011-01-05 44 views
0


我有这样的代码:JS获得无线电标签文本

<input type=radio name="vote_x" value="5"> 
    <label for="vote_x">blabla</label><br> 

我怎样才能获取标签值的收音机的vote_x [使用JS] ID?

感谢

+0

是这个直的JS或jQuery? – hunter 2011-01-05 16:15:50

回答

2

如果你把一个ID标签上这样

<input type="radio" name="vote_x" value="5"> 
<label id="for_vote_x" for="vote_x">blabla</label> 

然后可以使用

var textinlabel = document.getElementById("for_vote_x").innerHTML; 

编辑:随着出使用ID为标签元素

var labelElements = document.getElementsByTagName("label"); 
for (var i = 0, var labelElement; labelElements[i]; i++) { 
    if (labelElement.getAttribute("for") == "vote_x") { 
    //this is the labelElement you want 
    //code goes here 
    } 
} 

理想情况下,你会想创建一个通用功能这

function getlabelforinput(inputname) { 
    var labelElements = document.getElementsByTagName("label"); 
    for (var i = 0, var labelElement; labelElements[i]; i++) { 
     if (labelElement.getAttribute("for") == inputname) { 
     return labelElement 
     } 
    } 
    return null; 
} 
+0

任何解决方法无需为标签创建标识? – 2011-01-05 16:16:57

+0

@Ranan Dejhero ....我添加了一个不同的解决方案,如果您在输入元素之前或之后放置标签,它将起作用。 – 2011-01-05 16:24:14

+0

谢谢,它的工作,但它有一些错误(与var) – 2011-01-05 16:44:05

0

你可以试试这个

var el = document.getElementById("vote_x"); 
while(el.nextSibling && !(/label/i.test(el.nextSibling.tagName))){ 
    el = el.nextSibling; 
} 
var text = el.nextSibling.innerHTML 

您可以检查它在这个fiddle

+0

我想这会工作,但也许标签不保证是下一个兄弟? – hunter 2011-01-05 16:23:31

+0

循环将处理输入元素和标签之间可能出现的文本节点。如果位置不固定,那么@ John的解决方案(http://stackoverflow.com/questions/4606300/js-get-radio-label-text/4606417#4606355)将是最好的。 – 2011-01-05 16:25:06