0

これは機能していないようです。このwhileループを正しく機能させる方法がわかりません。助けていただければ幸いです。

function getProductCode() {
   productCode = parseInt(prompt("Enter Product Code: "));
   while (productCode < 1 || > 9999) 
   {
      document.writeln("Error! the product Code must be between 1 - 9999");
      parseInt(prompt("Enter Product Code: "));
   }
   return productCode
}

getProductCode()
4

3 に答える 3

5

productCode左側にオペランド ( ) がありません:

while (productCode < 1 || productCode > 9999) 
                          ^^^^^^^^^^^

と:

  • に基数を指定しparseIntます。無指定時010は8(8進数リテラル)となります。
  • 変数をグローバル スコープにリークしないでくださいvar。ローカル変数の宣言に使用します。
  • ロジックを反転するか、 を使用しますisNaN。無効な数値が指定された場合 ( NaN)、ループは停止しません。
  • メッセージをdocument.writelnダイアログに移動することをお勧めします。
  • に新しい値を割り当てますproductCode。そうしないと先に進まない…
  • 重要: ダイアログはブラウザで無効にすることができます。何度も無限にループするのではなく、しきい値を追加してください。

最初の 5 つの箇条書きを処理する最終的なコード:

function getProductCode() {
   var productCode = parseInt(prompt("Enter Product Code: "), 10);
   while (!(productCode >= 1 && productCode <= 9999)) {
      productCode = parseInt(prompt("Error! the product Code must be between 1 - 9999\nEnter Product Code: "), 10);
   }
   return productCode;
}

私はしきい値を実装していません。それはあなた次第です。

于 2012-07-07T13:53:55.663 に答える
2

そのはず:

while (productCode < 1 || productCode > 9999)
于 2012-07-07T13:54:59.360 に答える
0

(productCode < 1 || > 9999)は構文的に有効な式ではありません

あなたはおそらくしたいです(productCode < 1 || productCode > 9999)

于 2012-07-07T13:55:59.297 に答える