3

for loopJavascript でa を使用して複数の変数を宣言できるかどうか疑問に思っています。

例: Id がとの4 つ<article>の要素があります。各変数を個別に宣言する代わりに、ループで実行したいと思います (基本的に同じコードを使用しており、同じことを繰り返したくないためです!)。article1 article2 article3article4

何かのようなもの:

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

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

        }
}

上記は予期しない でエラーを返す[ため、構文がオフになっている必要があります (私は JS に非常に慣れていません)。ただし、(a) これは正しい軌道に乗っており、(b) これらをwindow.ready 関数?

4

6 に答える 6

6

[charで変数名を設定することはできません。これを使用すると、javascript の例外が発生します。リスト/配列を使用してこれを行うことができます。次のような配列クラスで試してください。

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));

   }
}
于 2012-12-13T10:47:05.870 に答える
4

まず、JavaScript 関数にはブロック スコープではなく関数スコープがあることに注意することが重要です。これは、「記事」が for ループに固有のものではないことを意味します。したがって、ブロック内で宣言すると、実行時に実際に何が起こるかについて誤解を招く可能性があります。var articlefor

あなたがしたことを達成するには、次のことがうまくいくはずです:

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

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

        }
}

参考文献

于 2012-12-13T10:48:52.510 に答える
2

ループするたびに新しい記事配列を作成しています..

「for」ループに入る前に Article Array を作成します。

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

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

        }
于 2012-12-13T10:47:56.413 に答える
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);
}
于 2012-12-13T10:52:07.430 に答える
1

を使用して試すことができますeval

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

これは通常の変数のように機能し、ローカル スコープでのみ表示されます。ただし、これはおそらく悪い習慣なので、動的変数を格納するための配列またはハッシュ テーブルを作成するだけです。

于 2012-12-13T10:49:15.477 に答える
0

配列を使用する前に配列を宣言します Ex : var article = []; // new Array() の短いバージョンで、そのままコードを記述します...

これが役立つことを願っています

于 2012-12-13T10:49:23.877 に答える