2016-12-14 11 views
0

私は、ユーザーから10個の入力を受け取り、配列に格納されたJavascriptで単純なプログラムを作成しようとしています。そして、その入力をコンソールに表示します。プロンプトから配列の値をjavascriptに格納する方法は?

私はすでに記述したコードの下

var name = []; 
for(var i =0; i<=10; i++){ 
    name[i]=(prompt('Enter your name')); 
} 
console.log(name); 

しかし、それは任意の値を示していないと私はのためのループ内のiの値を慰めることを試みました。
コンソールで未定義を示しています。この問題を解決するために私を助けてください。ありがとう。

+0

これはうまくいくはずです(ただし、 'prompt'は理想的ではありません)。 *編集:ああ、いいえ、おそらくブラウザのグローバルスコープで 'name'を使っているからです。* –

+0

サイドノート:0から10まで(例えば、0から始めて' <= 10'に) ** 11回**、10回ではありません。 –

+0

変数のスコープまたは名前を変更する必要はありますか? – Piyali

答えて

2

ブラウザでグローバルスコープでそのコードを実行している必要があります。 nameはすでにブラウザのグローバル名前空間に定義されています。現在のウィンドウの名前(文字列)です。

(function() { 
    var name = []; 
    for (var i = 0; i < 10; i++) {   // Note 1 
     name[i] = prompt('Enter your name'); // Note 2 
    } 
    console.log(name); 
})(); 

ここでの教訓:グローバルスコープを避けあなたはスコープ機能または類似を使用する必要があり、varを介してグローバルスコープでそれをシャドウすることはできません。 :-)

注1:10ループだけが必要な場合は、< 10ではなく、<= 10を入力します。

注2:()は、割り当ての右側全体に配置する必要はありません。

+0

_ var_を使ってグローバルスコープでシャドーすることはできませんが、実行するとオーバーラップする可能性があります'var name = [];'を実行すると同時にできませんでした。なぜそれを説明できますか? –

+0

@RajaprabhuAravindasamy: 'name'は文字列であり、その型は変更できません。それに '1000 'を割り当てると、' String(1000) 'を割り当てたように、' '1000" '(文字列)になります。空の配列を代入するのは '[] .join()、' [] .join( ")である' [] .toString() 'で' String([]) ")'、これは '' ''です。 –

+0

完全に理解しています。 _名前は文字列であり、その型は変更できません._そうですか?ウィンドウ内のデフォルトプロパティのタイプを変更できませんか? –

-1

このコードを試してください:

var nm = new Array(10); 
for(var i =0; i<10; i++){ 
    nm[i]=prompt('Enter your name'); 
} 
for(var i =0; i<10; i++){ 
    document.write(nm[i] + '<br>'); 
} 

私たちは、 '名前' として変数名を使用することはできません。同様に配列の値を取得するには、配列のインデックス番号を指定する必要があります。上の例では、forループを使用してすべての値を取得します。

ありがとう...

関連する問題