0

以下は、問題を引き起こしているコードのスニペットです。ここの前に、問題なく動作するものがたくさんあります。

if (numWOOD_OK) 
    {
    return true;    
    }
else {  
    alert("Number of bags must be a whole number");
    return false;                             
    }   
if (numDISTANCE<=0)                             
    {                       
    alert("Input for distance is invalid");                 
    return false;                       
    }

基本的にif (numWOOD_OK)は、以前に宣言された RegExp を実行しており、それが false を返す場合は、問題の入力ボックスに 10 進数が入力されたことを意味します。これは望ましくありません。

if (numDISTANCE<=0)、特定の入力ボックスが空かどうかをチェックしています。の前にある半ダースの他のチェックと同じ方法で設定されますif (numWOOD_OK)

問題は、if (numDISTANCE<=0)発火しないことです。誰でも理由を教えてもらえますか?

4

3 に答える 3

3

if 条件に到達する前に常に true または false を返すため、決して実行されません。

次のように書き直して動作させることができます。

if (!numWOOD_OK)  {
    alert("Number of bags must be a whole number");
    return false;                             
}   
if (numDISTANCE<=0) {                       
    alert("Input for distance is invalid");                 
    return false;                       
}
return true;
于 2013-05-16T00:44:11.950 に答える
0

内部の関数が何であれ、その上の return ステートメントのいずれかで終了します。このようなコードがある場合

if(this) {
    return true;
} else {
    return false;
}
// this part will never execute
于 2013-05-16T00:44:56.280 に答える
0

コードが if に到達するまでには、関数から既に返されています。戻ると、ロジックが短絡し、関数がすぐに停止します。ローカル変数を使用して戻り値を格納し、最後にそれを返すことを検討してください。

var ret;
if (numWOOD_OK) 
    {
    ret = true;
    }
else {  
    alert("Number of bags must be a whole number");
    ret = false;                        
    }   
if (numDISTANCE<=0)                             
    {                       
    alert("Input for distance is invalid");                 
    ret = false;     
    }
return ret;
于 2013-05-16T00:45:56.103 に答える