2013-05-16 331 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;