2013-05-16 320 views
0

所以下面是導致我的問題的代碼片段。 在這之前有一堆東西可以正常工作。我的Javascript被卡住了

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)運行的是較早宣佈對正則表達式,如果返回false則意味着小數已經輸入到輸入框中的問題 - 這是我們不想要的。

if (numDISTANCE<=0)正在檢查某個輸入框是否爲空。它的設置與if (numWOOD_OK)之前的其他六項檢查一樣。

問題是,if (numDISTANCE<=0)不會觸發。 誰能告訴我爲什麼?

+0

我們需要更多代碼,您可以爲我們發佈jsfiddle嗎?因爲無論變量numDISTANCE是什麼,都是你的問題。 – CP510

+0

嘗試發佈[SSCCE](http://sscce.org/),問題的立場現在缺乏足夠的數據來正確回答。也可以考慮在現場環境中複製SSCCE,例如http://jsfiddle.net或http://jsbin.com –

回答

3

在達到該條件之前,您總是返回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; 
+0

乾杯,這個技巧很好。現在,我必須等待五分鐘才能將您的答案標記爲答案...........(鼓手指放在桌子上) –

0

無論你的函數裏面與它上面的return語句的一個結束。如果你有這樣的代碼

if(this) { 
    return true; 
} else { 
    return false; 
} 
// this part will never execute 
0

當代碼到達時,如果它已經從函數返回。返回短路邏輯並立即停止功能。您可能會考慮使用本地變量來存儲返回值,並在最後返回:

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;