1

皆様、

私は立ち往生しています。私は自分のコードを機能させるためにこれを熟考してきました(そしてあなたの貴重な支援を求めているので明らかに失敗しました)。

ループを使用して名前を入力し続けるようにユーザーに促す単純な(...申し訳ありませんが、これは初めてです)コードを考え出す必要があります。ユーザーが「q」(引用符なし)を入力せず、入力された値がnullでない場合は、入力された値を配列(私の場合は名前)に追加する必要があります。

ユーザーが「q」と入力すると、ループが停止し、「q」は配列に入力されず、名前のリストが出力されます(コードの2番目の関数を使用)。

これが私がこれまでに持っているものです...ループにi<5を実行するように指示すると、コードを機能させることができます... 5回実行された後、停止します。しかし、i <names.length..を実行すると、長さがnullであるか、オブジェクトではないと表示されて失敗します(10行目)。それが問題の1つです。そして、私の人生では、ユーザーがqを入力するまで、ループを実行するロジックを追加する方法を理解できません。

助けてください!

ありがとうございました。

function getNames(){
var names = new Array();
    for(i=0;i<names.length;i++){ /*if i do i=0;i<5;i++, the code works; it doesn't with this*/
    names[i] = prompt("Enter an item to add to the Name list (enter \'q\' to quit","");
}
printNames(names);
}

function printNames(names) {
for(x=0; x < names.length;x++){
document.write(names[x] + '<br />');
}

}
getNames();
printNames();
4

2 に答える 2

2

私はあなたのクラス/本のどこかでそれがwhileループについて話していると確信しています。したがって、制限なしで入力を続けたい場合は、whileループを使用する必要があります。

while (myCondition===true) {
  //do something
}

次に、forループを見て、失敗している理由を理解します。

for(i=0;i<names.length;i++)

それが何をしているのか見てください:

  • i = 0
  • names.length = 0

ですか0 < 0

于 2012-12-24T16:08:13.933 に答える
0

問題1から始めましょう。

名前の配列は長さプロパティ0で始まります。したがって、0は0以上であるため、最初のforループは実行されません。

これは問題2につながります。

繰り返しますが、names配列に何も入力されていないため、2番目のforループは、配列のlengthプロパティがまだ0であるため、何も実行せず、document.writeを実行しません。

于 2012-12-24T16:15:14.013 に答える