【问题标题】:Javascript AND statement syntaxJavascript AND 语句语法
【发布时间】:2013-02-13 21:58:46
【问题描述】:

我正在尝试对一系列用户输入值(-180 到 180)进行简单的表单验证,但代码的行为与我预期的不同。

function validateForm()
{
retVal = true;

lon = document.getElementById("LON").value;
if ((lon  >= -180 && lat <= 180 )== false) 
retVal=false;

if(retVal == false)
{

alert('Please correct the errors');
return false;
}
return retVal;
}

因此,例如,如果我输入 -254 的值,我会按预期收到警报。 但是,如果我输入任何大于 -181 的值,我就不会收到警报。 我在这里错过了什么??

警告:我是新手。

【问题讨论】:

  • == false 毫无意义。改变逻辑,这样你就不需要那个奇怪的检查了。
  • 请在发布前格式化您的代码
  • 确实有道理,@epascarello - &amp;&amp; 周围的两个子表达式的结果都是布尔值。 (我不会那样编码,但这不是“错误的”。
  • 你从哪里得到lat
  • 您的if() 正在检查lon 的一部分检查和lat 的另一部分...您打算对它们都使用lon 吗?

标签: javascript forms syntax


【解决方案1】:

我猜你应该检查lon 变量是否不小于-180 并且不大于180。使用简单的if 语句:

var lon = document.getElementById("LON").value;
if (lon < -180 || lon > 180)
    retVal = false;

需要注意的是,你最好使用var关键字来定义局部变量。

【讨论】:

  • @VisioN 尝试了您的“if”语句。但是它仍然只捕获超出范围的负值
  • @DarraghO'Keeffe 你在两个部分都使用lon 变量吗?
  • @VisioN 我相信是lon = document.getElementById("LON").value;
  • @VisioN 感谢刚刚在您的声明中发现了latlon。现在工作。谢谢
【解决方案2】:

您根本不需要 if() —— 只需将 retval 设置为表达式中的布尔值...

function validateForm() {
    var lon = document.getElementById("LON").value;
    var retval = (lon  >= 180 || lon <= -180);
    if(!retVal) { alert('Please correct the errors'); }
    return retVal;
}

【讨论】:

    【解决方案3】:

    你有初始化的“lon”,但“lat”在哪里被初始化?

    以下应该有效:

    function validateForm()
    {
        var lon = document.getElementById("LON").value;        
        var lat = document.getElementById("LAT").value;
    
        var isValid = (lon  >= -180 && lat <= 180 );
    
        if ( !isValid)        
        {
            alert('Please correct the errors');
        }
    
        return isValid;
    }
    

    【讨论】:

    • 是的,就是这样,只是最初没有抓住lat
    【解决方案4】:

    如果你想在某个范围内进行验证,那么 if 条件应该只检查单个变量,如果为真,则返回真,否则显示错误并返回假。

    function validateForm()
    {
        retVal = true;
    
        lon = document.getElementById("LON").value;
        if (lon  >= -180 && lon <= 180) 
        {
        return retVal;
        }
        else
        {
        alert('Please correct the errors');
        retVal = false;
        return retVal;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-25
      • 2015-01-18
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多