2017-03-23 4 views
0

これは私が現在持っているものですが、v1と同じように動作するv(i)を得ることはできません。私は間違って何をしていますか? 私も以下の作品もうまくいかなかったものを試しました。変数名にカウンタを使用する

var x = "v" + i; 
alert(x); 

私の主な問題は以下の通りです:事前に

var v1 = document.getElementById("thing1").innerHTML; // = 100 
var v2 = document.getElementById("thing2").innerHTML; // = 150 
var v3 = document.getElementById("thing3").innerHTML; // = 200 

for (i = 0; i < 4; i++) { 
    if (v(i) != ""){ 
     alert(v(i)); 
     } 
} 

感謝:)

+1

なぜ配列やオブジェクトを使用しないのですか? –

+0

vを括弧を後ろに置くと、関数としてvが呼び出されます。 –

+0

@NinaScholz何を意味するのか説明できますか?私は完全に初心者です。 – TakeoGFX

答えて

1

あなたが容易に達成されていないやろうとしています。変数をウィンドウオブジェクトに割り当て、そこからそれを印刷する必要があります。

はるかに優れたソリューションは、これを処理するために、独自のオブジェクトまたは配列を使用することです:

var v1 = document.getElementById("thing1").innerHTML; // = 100 
var v2 = document.getElementById("thing2").innerHTML; // = 150 
var v3 = document.getElementById("thing3").innerHTML; // = 200 
var array = [v1,v2,v3]; 
for (i = 0; i < 4; i++) { 
    if (array[i] != ""){ 
     alert(array[i]); 
     } 
} 
0

あなたは、単一の変数やループ、それを使用せずに、配列を使用することができます。

var array = [ 
 
     '100', // document.getElementById("thing1").innerHTML, 
 
     '150', // document.getElementById("thing2").innerHTML, 
 
     '200' // document.getElementById("thing3").innerHTML 
 
    ], 
 
    i; 
 

 
for (i = 0; i < array.length; i++) { 
 
    if (array[i] !== "") { 
 
     console.log(array[i]); 
 
    } 
 
}

あなたには、いくつかのキーが必要な場合は、オブジェクトを使用することができます。

var object = { 
 
     v1: '150', // document.getElementById("thing1").innerHTML, 
 
     v2: '200', // document.getElementById("thing2").innerHTML, 
 
     v3: '250', // document.getElementById("thing3").innerHTML 
 
    }, 
 
    i; 
 

 
for (i = 1; i <= 3; i++) { 
 
    if (object['v' + i] !== "") { 
 
     console.log(object['v' + i]); 
 
    } 
 
}

0

すべてのグローバル変数は、あなたがそれらを作成するためにwindow['v'+ i]またはthis['v'+ i]を使用することができwindowオブジェクトのプロパティです。 しかし、これは非常に悪いパターンではなく、オブジェクトを使用することを検討しています。

0

あなたがしようとしているのは、補間された変数名を取得することです。これはjavascriptでは不可能です。

this['v'+i]またはwindow['v'+i]を使用すると、どちらもグローバルスコープでは問題になります。

v(i)は実際には意味:パラメータi

実行機能v(...)私が理解しやすいJavaScriptであなたの例のコードを記述した場合、私はこの思い付くでしょう:あなたがしたい場合

for(var i = 1; i <= 4; i++) 
{ 
    var html = document.getElementById('thing'+i).innerHTML; 
    alert(html); 
} 

を同じコードを6回も書かないように、配列の値を配列に入れてください:

var ids = ['thing1','thing2','thing3','thing4']; 

// es5 
    var values = []; 
    for(var i = 0; i < ids.length; i++) 
    { 
    var html = document.getElementById(ids[i]).innerHTML; 
    values.push(html); 
    } 
    // values now contains all the values of the elements 

// OR es 6 
    var values = ids.map(function(id) { return document.getElementById(id).innerHTML; }); 
    // or 
    var values = ids.map(id => document.getElementById(id).innerHTML); 
関連する問題