2013-10-17 70 views
3

我有以下組複選框:如何獲取複選框的文本?

<ul class="checkbox_list"> 
<li><input name="mensajes[receptores_list][]" type="checkbox" value="5" id="mensajes_receptores_list_5" />&nbsp;<label for="mensajes_receptores_list_5">Carlos (Admin)</label></li> 
<li><input name="mensajes[receptores_list][]" type="checkbox" value="1" id="mensajes_receptores_list_1" />&nbsp;<label for="mensajes_receptores_list_1">Jorge (Admin)</label></li> 
<li><input name="mensajes[receptores_list][]" type="checkbox" value="3" id="mensajes_receptores_list_3" />&nbsp;<label for="mensajes_receptores_list_3">Marisa (Admin)</label></li> 
<li><input name="mensajes[receptores_list][]" type="checkbox" value="6" id="mensajes_receptores_list_6" />&nbsp;<label for="mensajes_receptores_list_6">Christian (Apuntes)</label></li> 
<li><input name="mensajes[receptores_list][]" type="checkbox" value="4" id="mensajes_receptores_list_4" />&nbsp;<label for="mensajes_receptores_list_4">Julieta (Contable)</label></li> 
<li><input name="mensajes[receptores_list][]" type="checkbox" value="2" id="mensajes_receptores_list_2" />&nbsp;<label for="mensajes_receptores_list_2">Vicky (Contable)</label></li> 
</ul> 

使用JavaScript,我怎麼能訪問每個項目的文本。例如,對於id =「mensajes_receptores_list_5」的元素,我希望獲得文本「Carlos(Admin)」

+1

你找的標籤或複選框的文本? –

+0

我想獲得文本「Carlos(Admin)」,例如 –

+0

如果您正在娛樂jQuery解決方案,那麼最好用jQuery標記 – kjelderg

回答

4

的jQuery

function getLabel(id) 
    { 
    return $("#"+id).next("label").html(); 
    } 

    //id of checkbox ,you want to get label of 
    var label=getLabel('mensajes_receptores_list_1'); 
    alert(label); 

的jsfiddle http://jsfiddle.net/pcQgE/1/

+0

只需要注意,這適用於標籤出現在複選框後面的示例,但不適用於標籤和複選框的更一般情況。 – kjelderg

+0

我有一個站在後面。但是,此解決方案找不到。結果總是返回空值 –

0

這將迭代並將所有文本打印到控制檯。例如,您也可以通過使用if(i == 3)來獲得特定的一個。

var labels = document.getElementsByTagName('label'); 

for(var i = 0; i < labels.length; i++) 
{ 
    console.log(labels[i].innerHTML); 
} 

http://jsfiddle.net/pcQgE/

1

您可以使用兄弟選擇:

var id = "mensajes_receptores_list_5" 
alert(document.querySelector("#"+id+"+ label").innerText); 
0

您可以使用jQuery。 例子:

var label = $("#mensajes_receptores_list_5").next("label").text(); 
alert(label) 
5

我想接近它是這樣的:

function getLabelText(needle) { 
    var labels = document.getElementsByTagName("label"); 
    var texts = []; 
    for (var i = 0; i < labels.length; i++) { 
     var label = labels[i]; 
     if(label.getAttribute("for") == needle) { 
      console.log(label.innerText); 
      texts.push(label.innerText); 
     } 
    } 
    return texts; 
} 
+1

感謝您提供非jQuery解決方案。我只是想補充說,在我的情況.value返回「未定義」,所以我用.innerText和運行良好。 – dyslexicanaboko