为什么`if(a = b)`在Javascript中不能用于比较?

时间:2016-07-17 18:44:47

标签: javascript html

我正在尝试创建一个字符串,如果b(密码)= a(问候),它将提醒“jj”,如果不是“nope”但我无法弄清楚为什么它不起作用。我知道这不是密码存储的方式。

<!DOCTYPE html>
<html>
<body>

<input type="button" value="run js" onclick="start()">

<br><br>

UserName: <input type="text" id="userName">

Password: <input type="password" id="pasWord">


<p>hello</p>

<button onclick="passWord()"></button>


<script>
function start() {
    var a = ("hello");
}
function passWord() {
    var b = document.getElementById("pasWord").innerHTML;
    if (a = b) {
        alert("jj");
    } else {
        alert("nope");
    }
}

</script>

</body>
</html>

4 个答案:

答案 0 :(得分:1)

a = b不正确。它应该改为:

a === b

在if语句中,您应该只有可以被评估为布尔值的表达式(true / false)。显然,此a=bba的分配,并且它不是一个可以被评估为真或假的表达式。

此外,在这里b = document.getElementById("pasWord").innerHTML您应该访问value属性,而不是innerHTML,因为它包含您要查找的值。

最后但并非最不重要的是,您应该看到变量a的声明。实际上,a函数无法访问passWord

您可以尝试以下内容(尽管它有点无意义:))

&#13;
&#13;
var a;

function start() {
    a = "hello";
}

function passWord() {
    var b = document.getElementById("pasWord").value;
    if (a === b) {
        alert("jj");
    } else {
        alert("nope");
    }
}
&#13;
<input type="button" value="run js" onclick="start()">
<br/>
UserName: <input type="text" id="userName">
Password: <input type="password" id="pasWord">
<p>hello</p>
<button onclick="passWord()">password</button>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用单个“=”符号将值赋给该变量。在您的情况下,使用==或===来检查字符串变量A是否等于“hello”

这是解决方案:)

<script>
function start() {
    var a = ("hello");
}
function passWord() {
    var b = document.getElementById("pasWord").innerHTML;
    if (a === b) {
        alert("jj");
    } else {
        alert("nope");
    }

}

答案 2 :(得分:0)

这里有一些问题:

  • 您访问.innerHTML,这不是输入的值。要使用document.getElementById("pasWord").value
  • 来访问该值
  • 您尝试将ab与作为分配的a = b进行比较,以比较使用=====a === b
  • 您在a函数的上下文中声明start,因此无法在passWord函数中访问它。您可以全局存储它(只需将var a = ("hello");替换为a = ("hello");,或者更好,直接在passWord函数中访问它。

答案 3 :(得分:0)

您将b值分配给a。不比较。要比较两个值使用=====