Javascript - 使用for循环声明变量

时间:2012-12-13 10:44:14

标签: javascript

我只是想知道是否可以在Javascript中使用for loop声明多个变量。

示例:我有4个<article>元素,其ID为article1 article2 article3article4。我不想独立地声明每个变量,而是想在循环中完成它(因为它们使用的代码基本相同,我不想重复自己!)。

类似的东西:

window.ready = function(){
    for (var i=1; i<=4; i++){

            var article[i] = document.getElementById("article" + i);

        }
}

以上内容会返回一个意外[的错误,因此我的语法必须关闭(我对JS来说很新),但(a)是否在正确的轨道上如果我在window.ready函数中运行它们,那么(b)这些是全局变量吗?

6 个答案:

答案 0 :(得分:6)

您无法使用[ char设置变量名称。使用它,你会得到一个javascript的例外。您可以使用List / Array来执行此操作,尝试使用Array类,例如:

window.ready = function() {

   var articles = new Array();

   for (var i=1; i<=4; i++){

      articles[i] = document.getElementById("article" + i);

   }
}

使用Array类,您不需要指定长度,但如果需要,可以在构造函数上设置它。

var articles = new Array(4);

另一种方法是使用push方法在数组上添加元素,用于示例:

window.ready = function() {

   var articles = []; // define an empty array

   for (var i=1; i<=4; i++){

      articles.push(document.getElementById("article" + i));

   }
}

答案 1 :(得分:4)

首先要注意的是JavaScript函数具有函数作用域而不是块作用域,这意味着'article'不是for循环所特有的。因此,在var article块中声明for可能会误导运行时实际发生的情况。

要实现以下目标后的工作:

window.ready = function(){
    var article = [];
    for (var i=1; i<=4; i++){

            article.push(document.getElementById("article" + i));

        }
}

<强>参考

答案 2 :(得分:2)

每次循环时都在创建一个新的文章数组。

在输入“for”循环之前创建一个文章数组。

article = new Array(4);
    for (var i=1; i<=article.length; i++){

            article[i] = document.getElementById("article" + i);

        }

答案 3 :(得分:1)

您可以尝试使用eval

for (var i = 1; i <= 4; i++) {
    eval( 'var article'+i+' = document.getElementById("article' + i +'");' );
}

这将像普通变量一样工作,它们只在本地范围内可见。这可能是一个不好的做法,所以只需创建一个数组或哈希表来存储动态变量。

答案 4 :(得分:1)

而不是你可以抓住所有<article>元素:

var articles = document.getElementsByTagName("article");

// access them in a loop
for(var i=0; i<articles.length; i++)
{
    console.log("Hey I'm " + articles[i].id);
}

答案 5 :(得分:0)

在使用数组之前声明数组 例如:var article = []; //较新版本的新数组() 然后按原样编写代码......

希望这会有所帮助