2011-01-05 64 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