为什么我的数组中的某些值未定义

Xtr*_*eme 2 javascript php arrays undefined

我在php中有一个for循环,在我的页面上添加了一些看起来像这样的复选框

<input type="checkbox" name="checkbox[]">
Run Code Online (Sandbox Code Playgroud)

我想使用javascript来检查哪个被检查并在数组中添加值

var cboxes = document.getElementsByName('checkbox[]');
var len = cboxes.length;
var imageArray = new Array();

for (var i = 0; i < len; i++) {
    if (cboxes[i].checked) {
        imageArray[i] = cboxes[i].value;
    } 
}
Run Code Online (Sandbox Code Playgroud)

如果我有50个盒子并单击复选框号2,4和6,循环遍历我的阵列,我得到结果.

for(var i = 0; i < imageArray.length; i++){
    gallery.innerHTML += imageArray[i] + "<br>";
}
Run Code Online (Sandbox Code Playgroud)

-

undefined
Correct value
undefined
Correct value
undefined
Correct value
Run Code Online (Sandbox Code Playgroud)

如果我检查数字1,2,3我得到结果

Correct value
Correct value
Correct value
Run Code Online (Sandbox Code Playgroud)

当我跳过复选框时,为什么我会得到未定义?我如何解决它

lon*_*day 6

这是因为您要向数组添加额外的元素.以此代码为例:

var a = []; // empty array
a[1] = 'foo'; // don't set a[0]

console.log(a.length); // gives 2
Run Code Online (Sandbox Code Playgroud)

Javascript将始终"填写"数组键列表中的空白.如果你错过了一些,Javascript将填补空白undefined.

而不是通过键名称将元素添加到您的数组,而只是push它到数组的末尾:

imageArray.push(cboxes[i].value);
Run Code Online (Sandbox Code Playgroud)