Javascript:我可以't找到正确的方式来表达布尔“;如果“;以得到我想要的结果

Javascript: I can't find the correct way to phrase a Boolean "IF" to get the result I want

本文关键字:布尔 如果 结果 我想要 我可以 方式 Javascript      更新时间:2024-01-06

好吧,我是javascript和html的新手,我正在为类内赋值编写一个基本表单。它基本上是为了教我们如何从表格中获取元素并用它们做一些事情。

这是任务的第三部分,我对前两部分没有意见。现在,我不能让这个工作。

function lessonLevel_onclick(){
    var code=document.getElementById("txtCode");
    var level=document.getElementById("txtLevel");
    alert(code.value);
    if (code.value == "o" || "O"){
        level.value="Otter";
        alert(code.value);
    }
    else if(code == "n" || "N"){
        level.value="Newt";
        alert(code.value);
    }
    else if(code == "s" || "S"){
        level.value="Sunfish";
        alert(code.value);
    }
    else if(code == "c" || "C"){
        level.value="Crocodile";
        alert(code.value);
    }
    else if(code == "w" || "W"){
        level.value="Whale";
        alert(code.value);
    }
    else{
        level.value="Unknown";
    }
}

这些警报除了帮助我弄清楚它实际到达的地方之外,没有任何作用。基本上,无论我在表单中输入什么,输出都是Otter。。。就好像输入是什么并不重要,它总是使第一个"if"语句为true。

它应该做什么:用户输入"o"或"o",表单输出游泳级别"Otter"。。。"n"或"n",它是Newt。。。真的,真的,基本的。。。这就是为什么它让我发疯的原因。

我看不出我做错了什么。if语句"alert(code.value)"之前的警报与输入相同。意味着输入正确。

所以我知道问题出在我的布尔值中。它显然没有进行适当的比较。

知道我哪里错了吗?

如果它有帮助的话,这里是我写的html代码。。但我确信这不是问题所在:

<! DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="scripts/lessonLevel.js"></script>
    </head>
    <body>
    <noscript>Please Enable Javascript!</noscript>
        <form>
            <h2>Swimming Lesson Level</h2>
            <p>Enter Lesson Code:
            <input type="text" id="txtCode"></p>
            <p>Lesson Level:
            <input type="text" id="txtLevel" readonly="readonly"></p>
            <input type="button" onclick="lessonLevel_onclick()" value="Determine Level">
            <button type="reset" value="Reset">Reset</button>
        </form>
    </body>
</html>

而且,正如我所说,任何输入都会使输出成为"Otter",即使我将其留空。。。

顺便说一句:我试着先把code.value变成一个字符串,但似乎没有帮助。。

提前感谢您的帮助!如果有什么我可以补充澄清的,请告诉我!

不能像现在这样使用或运算符。更改

if (code.value == "o" || "O"){

if (code.value == "o" || code.value == "O"){

更好的是:在检查之前将输入转换为小写:

var codeValue = code.value.toLowerCase();
if (codeValue == "o") { ..

您应该不要这样做:

if (code.value == "o" || "O") // This is BAD
    // This will result in true if either
    // code.value == "o" evaluates to true, or
    // "O" evaluates to true, because strings evaluate to true

要真正检查code.value是"o"还是"o",请执行以下操作:

if (code.value == "o" || code.value == "O") {
    // code here
}

你应该做一些更像这样的事情:

if (code.value.toLowerCase() === "o") {

注意,您几乎应该总是使用"==="而不是"==",因为前者测试某个值和数据类型(数字、字符串、布尔值、对象等)是否与另一个匹配。"=="在测试值之前执行类型转换。例如:

if ("42" == 42) { // true
if ("42" === 42) { // false

尝试编写正确的if语句。

if (code.value == "o" || code.value == "O"){
    //Code to execute
}