我试图将两个不同的变量相互比较,并在它们匹配时执行某些代码。 变量是:userInput和commandOne
首先,按下一个按钮调用myTest()。
function myTest() {
userInput = document.getElementById("runBox").value;
testInput();
}
该函数从我页面上的输入框中收集文本,并将其存储在名为userInput的变量中。然后它调用我的下一个函数......
function testInput() {
if (userInput = commandOne) {
document.getElementById("demo").innerHTML += "<br>executed!";
}else {
alert("this is an alert message");
}
}
此部分旨在测试userInput是否与名为commandOne的变量匹配。 (commandOne的值当前设置为“ip”)。
如果匹配,它会将文本(已执行!)添加到带有“演示”ID的段落中。如果不匹配,它将在警告框中提醒用户。
我的问题是变量似乎没有比较。无论用户放入userInput,文本(执行!)总是输出到我的段落。浏览器似乎认为它们匹配时不匹配。
答案 0 :(得分:2)
您在if语句中错过了您的运营商。
if (userInput == commandOne)
==
比较值
if (userInput === commandOne)
===
比较值和数据类型。
答案 1 :(得分:0)
如上所述 - 你有错误的操作符 - 但是我只想展示逻辑的替代方法: - 三元运算符 - 使其更好更清晰,更简洁,并减少if / else标记。
顺便说一句 - 考虑到所提供的代码 - 你甚至不需要调用第二个函数 - 整个过程可以在一个函数中完成。此外 - 如果警报纯粹是为了演示&#34;否则&#34;结果 - 您应该调查console.log()的用法 - 它是调试的好方法。
要解释三元运算符 - 首先要写入要满足的条件(注意没有&#34;如果&#34;在它之前。跟随它 - 使用&#34;?&#34; charcter到如果hte comparison为true,则给出一个动作,如果结果为假,则使用&#34;:#34;字符。
请注意,我总是在三行上编写三元运算符,就像我在这里所做的那样 - 我觉得它更容易阅读 - 它可以全部写在一行 - 个人偏好。
最后一件事 - 没有&#34 ;;&#34;在&#34; true&#34;的最后statemtn的一部分 - 我碰巧写了三行代码。
function testInput() {
userInput == commandOne
? document.getElementById("demo").innerHTML += "<br>executed!"
: alert("this is an alert message");
}
答案 2 :(得分:0)
您使用了错误的运算符。您必须使用==
符号,而不是单个=
符号。
function testInput() {
if (userInput == commandOne) {
document.getElementById("demo").innerHTML += "<br />executed!";
} else {
alert("This is an alert message");
}
}
单个=
符号(=
)表示符号左侧的值与符号右侧的值相同。
双=
符号(==
)表示符号两侧的两个值相等。
三=
符号(===
)表示两个值相等且类型相同。
Click here了解更多信息。