对于循环奇怪的输出
所以,我试图创建一个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>
您有权访问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())
});
这个完美的作品。我甚至插入了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
是外循环
编辑:把点击事件里面的日志功能。
这并没有解决它。它根本不输出任何内容:/ –
@LeonardoCanela我已经编辑了我对点击事件日志值的回答。 –
我之前尝试过,确实如此。它不起作用:/ 我无法发布图片,但控制台日志显示为“lista”变量为空,即使选中了多个复选框,并且在选中6复选框后,它会更新该值。 –
你有没有机会发布HTML? – Pineda
不,每个输出在循环的每次迭代中都是一个单独的“状态”,根本没有任何重复 –
@Pineda添加了HTML。 –