对于循环奇怪的输出

问题描述:

所以,我试图创建一个JavaScript事件,输出将列表中的每行单击后,数组中的每一行。我想出了这个代码:对于循环奇怪的输出

var lista = []; 
$("#lista li").click(function(){ 
    for (i = 0; i < $("#lista li").length; i++) { 
    if($("#lista li input")[i].checked) { 
     lista.push($('#lista li')[i].innerText); 
     console.log(lista); 
    } else { 
     lista.splice(lista.indexOf($('#lista li')[i].innerText), 1) 
    } 
    } 
}) 

但它为阵 什么是错的输出重复值?

编辑:一旦他们加入到指定的数组

<ul id="lista" class="drilldown" style="width: 100%"> 
       <li><input id="hemograma" type="checkbox" value="hemograma" style="margin-bottom: 0px;"><label for="hemograma" id="e0">Hemograma</label></li> 
       <li><input id="glicemia" type="checkbox" value="glicemia" style="margin-bottom: 0px;"><label for="glicemia" id="e1">Glicemia de jejum</label></li> 
       <li><input id="ctotal" type="checkbox" value="colesterol" style="margin-bottom: 0px;"><label for="ctotal" id="e2">Colesterol total</label></li> 
       <li><input id="hdl" type="checkbox" style="margin-bottom: 0px;"><label for="hdl" id="e3">HDL</label></li> 
       <li><input id="trig" type="checkbox" style="margin-bottom: 0px;"><label for="trig" id="e4">Triglicérides</label></li> 
       <li><input id="TSH" type="checkbox" style="margin-bottom: 0px;"><label for="TSH" id="e5">TSH</label></li> 
       </ul> 
+0

你有没有机会发布HTML? – Pineda

+0

不,每个输出在循环的每次迭代中都是一个单独的“状态”,根​​本没有任何重复 –

+0

@Pineda添加了HTML。 –

您有权访问JQuery核心,为什么不使用它? https://jsfiddle.net/googabeast/udazr5vp/

<ul id="lista" class="drilldown" style="width: 100%"> 
    <li><input id="hemograma" type="checkbox" value="hemograma" style="margin-bottom: 0px;"><label for="hemograma" id="e0">Hemograma</label></li> 
    <li><input id="glicemia" type="checkbox" value="glicemia" style="margin-bottom: 0px;"><label for="glicemia" id="e1">Glicemia de jejum</label></li> 
    <li><input id="ctotal" type="checkbox" value="colesterol" style="margin-bottom: 0px;"><label for="ctotal" id="e2">Colesterol total</label></li> 
    <li><input id="hdl" type="checkbox" style="margin-bottom: 0px;"><label for="hdl" id="e3">HDL</label></li> 
    <li><input id="trig" type="checkbox" style="margin-bottom: 0px;"><label for="trig" id="e4">Triglicérides</label></li> 
    <li><input id="TSH" type="checkbox" style="margin-bottom: 0px;"><label for="TSH" id="e5">TSH</label></li> 
</ul> 

<div class="result"></div> 




var lista = []; 
$("#lista li input[type='checkbox']").click(function(){ 
    var text = $(this).parent().text().trim(); 

    if($(this).is(":checked")){ 
     lista.push(text) 
    }else{ 
     lista.splice(lista.indexOf(text), 1) 
    }; 

    $(".result").text(lista.toString()) 
}); 
+0

这个完美的作品。我甚至插入了console.log()行来仔细检查哈哈。非常感谢,朋友! –

var lista = []; 
$("#lista li").click(function(){ 
    for (i = 0; i < $("#lista li").length; i++) { 
     if($("#lista li input")[i].checked) { 
      lista.push($('#lista li')[i].innerText); 
     } else { 
      lista.splice(lista.indexOf($('#lista li')[i].innerText), 1) 
     } 
    } 
    console.log(lista); 
}) 

这将输出的所有元素。

注意:记住,console.log是外循环

编辑:把点击事件里面的日志功能。

+0

这并没有解决它。它根本不输出任何内容:/ –

+0

@LeonardoCanela我已经编辑了我对点击事件日志值的回答。 –

+0

我之前尝试过,确实如此。它不起作用:/ 我无法发布图片,但控制台日志显示为“lista”变量为空,即使选中了多个复选框,并且在选中6复选框后,它会更新该值。 –