2013-10-17 71 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