我在循环内部有这样的循环:
var len = bolumlerUnique.length;
function bolumleriGonder() {
for (i = 0; i < bolumlerUnique.length; i++) {
elementBolumler = $("[bolumid=" + bolumlerUnique[i] + "]:checked");
console.log(elementBolumler);
for (j = 0; j < len; j++) {
console.log(elementBolumler[j])
}
}
}
bolumlerUnique
是一个数组-> [“ 1”,“ 2”,“ 3”,“ 4”]
我有无线电输入,并用这段代码
$("[bolumid=" + bolumlerUnique[i] + "]:checked");
但是在第二个循环中,console.log
写入undefined
。
但是elementBolumler是定义的全局变量。
答案 0 :(得分:1)
在第二个循环console.log中写入未定义。
要回答(几乎)出现的问题:“为什么我无法用$()[j]
进行定义?”
在jquery中,如果您尝试通过索引获取大于jquery集合中项数的元素,则会得到undefined
(不是数组超出范围,因为它不是数组),即:< / p>
var divs = $(".d");
console.log(divs[0])
console.log(divs[1]) // undefined
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="d">d1</div>
问题出在:
var len = bolumlerUnique.length;
for (j = 0; j < len; j++) {
当您遍历
$("[bolumid=" + bolumlerUnique[i] + "]:checked")
它只会包含与选中的id
相匹配的项目。
elementBolumler.length !== len
如对问题的评论中所述,[bolumid=" + bolumlerUnique[i] + "]
是radio
,因此它只会返回一个项目。
您对内循环索引len
的逻辑是错误的,但尚不清楚应该是什么-
elementBolumler.length
如:
function bolumleriGonder() {
for (i = 0; i < bolumlerUnique.length; i++) {
elementBolumler = $("[bolumid=" + bolumlerUnique[i] + "]:checked");
console.log(elementBolumler);
for (j = 0; j < elementBolumler.length; j++) {
console.log(elementBolumler[j])
}
}
}
答案 1 :(得分:1)
检查您的len
变量是否具有它必须与您的代码一起使用的值。
答案 2 :(得分:0)
const checkboxesIWantToMessWith = [2, 4, 6]
checkboxesIWantToMessWith.forEach(id => {
const checkbox = document.querySelector(`input[bolumid="${id}"]`)
if (checkbox.checked) {
// Do my stuff
console.log(`checkbox bolumid="${id}" is checked`)
} else {
// Do other stuff
console.log(`checkbox bolumid="${id}" is NOT checked`)
}
})
<input type="checkbox" bolumid="1" checked />
<input type="checkbox" bolumid="2" checked />
<input type="checkbox" bolumid="3" checked />
<input type="checkbox" bolumid="4" />
<input type="checkbox" bolumid="5" checked />
<input type="checkbox" bolumid="6" checked />