这段代码出了什么问题? (JavaScript)的

时间:2014-02-21 21:55:44

标签: javascript debugging

此代码有效,并且每次都会警告变量。

var idNumber;
var elements;
var id;
var blockerIds=[];
var whileLoop=0;
while (whileLoop<112) {
    elements=document.getElementsByName('bid');
    id=elements[whileLoop].getAttribute('id');
    blockerIds[whileLoop]=id;
    alert(blockerIds[whileLoop]);
    whileLoop++;
}

但是我尝试在while语句之外提醒它,如下所示:

var idNumber;
var elements;
var id;
var blockerIds=[];
var whileLoop=0;
while (whileLoop<112) {
    elements=document.getElementsByName('bid');
    id=elements[whileLoop].getAttribute('id');
    blockerIds[whileLoop]=id;
    whileLoop++;
}
alert(blockerIds);

但它只是说“未定义”。有谁知道我如何在while语句之外使用这个变量,或者看起来它应该可以正常工作?

2 个答案:

答案 0 :(得分:1)

JSFiddle:link。修正了你的代码:

var idNumber;
var elements;
var id;
var blockerIds=[];
var whileLoop=0;
elements=document.getElementsByName('bid');
while ((elements.length >= 112 && whileLoop < 112) || (whileLoop < elements.length && elements.length <= 112)) {
    id=elements[whileLoop].getAttribute('id');
    blockerIds[whileLoop]=id;
    whileLoop++;
}
alert(blockerIds);

答案 1 :(得分:0)

JS是一种解释型语言,当它运行时,它首先搜索var的所有定义,并给它们一个未定义的值。即使声称var具有实际值,在最终执行该行之前,仍将给出未定义的值。