为什么我的if语句都在激活?

时间:2016-02-07 19:06:47

标签: javascript

我现在完全敬畏,我通常能够迅速解决这些问题,但这对我没有任何意义。



	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);
&#13;
&#13;
&#13;

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

5 个答案:

答案 0 :(得分:1)

你的If语句都错了。我认为你在寻找的是:

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

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

当你在javascript中使用If时,任何持有值的东西都会返回true。 所以,如果你写:

if (user1.length)

它总会回归真实。你需要记住||

两边的&lt; = 6

希望这有帮助:)

答案 1 :(得分:0)

user1.length看起来很可疑。你确定它的布尔值吗?在||。

之前没有运算符或操作数

答案 2 :(得分:0)

这是因为这个条件

user1.length || pass1.length <= 6

如果user1.length非零,则由于short-circuit evaluation,甚至不会检查第二部分。

您的意思是使用逻辑和&&吗?

答案 3 :(得分:0)

如果user1.length非零,那么仅执行第一个if语句就足够了。

如果另外pass1.length&gt; = 7,那么第二个语句也将被执行。

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

答案 4 :(得分:0)

我现在明白为什么这不起作用。我现在有

&#13;
&#13;
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!";
}
&#13;
&#13;
&#13;

工作正常。谢谢:))