JavaScript循环内循环问题

时间:2019-03-22 13:13:24

标签: javascript jquery for-loop

我在循环内部有这样的循环:

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是定义的全局变量。

3 个答案:

答案 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 />