繁体   English   中英

为什么我的两个if语句都被激活?

[英]Why are both my if statements activating?

我现在完全敬畏,我通常能够很快弄清楚这些东西,但这对我来说没有任何意义。

  setTimeout( function(){ if (user1.length || pass1.length <= 6) { document.getElementById('verified').innerHTML="Error: Username or password too short!"; alert('Running'); setTimeout(function(){location.reload()},1000); } if (user1.length && pass1.length >= 7) { document.getElementById('verified').innerHTML="You've been verified!"; } } ,2000); 

由于某些原因,即使它们不符合规则,也会激活第一个if语句,并弹出页面重新加载/警报。

您的两个If语句均错误。 我认为您正在寻找的是:

if (user1.length <= 6 || pass1.length <= 6)

if (user1.length >= 7 && pass1.length >= 7)

当您在javascript中使用If时,任何包含值的东西都会返回true。 因此,如果您写:

if (user1.length)

它将始终返回true。 您需要记住||两侧的<= 6

希望这可以帮助 :)

user1.length对我来说可疑。 您确定它是布尔值吗? ||之前没有运算符或操作数。

因为这种情况

user1.length || pass1.length <= 6

如果user1.length不为零,则由于短路评估甚至不会检查第二部分。

您是要使用逻辑和&&吗?

如果user1.length不为零,则足以满足执行第一个if语句的条件。

如果另外pass1.length> = 7,那么还将执行第二条语句。

看似简单的逻辑语句可能很棘手,但是保持冷静和通过它们来处理事情是值得的。

我现在知道为什么这行不通了。 我现在有

 if (user1.length <= 6 || pass1.length <= 6) { document.getElementById('verified').innerHTML="Error: Username or password too short!"; setTimeout(function(){location.reload()},1000); } if (user1.length >= 7 && pass1.length >= 7) { document.getElementById('verified').innerHTML="You've been verified!"; } 

工作正常。 谢谢 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM