Javascript 为什么这段代码需要第二条if语句?

Javascript 为什么这段代码需要第二条if语句?,javascript,jquery,Javascript,Jquery,我试图理解为什么一个版本的代码可以工作,而另一个版本不能。我希望我已经包括了足够的信息。我从一个不再受支持的在线教程中学习 在本教程中,说明说明如下所示编写代码: $(document).ready(function(){ $("form").submit(function() { var input = $("#command_line").val(); console.log(input) console.log("submit") if (inpu

我试图理解为什么一个版本的代码可以工作,而另一个版本不能。我希望我已经包括了足够的信息。我从一个不再受支持的在线教程中学习

在本教程中,说明说明如下所示编写代码:

$(document).ready(function(){
    $("form").submit(function() {
    var input = $("#command_line").val();
    console.log(input)
    console.log("submit")

    if (input === "help") {
        $("#message_help").clone().insertBefore("placeholder").fadeIn(1000);
    }
});

$("#command_line").val("");

});
控制台中没有错误消息,但不会执行预期在浏览器中发生的操作

在工作代码中,原始代码上方还有另一条if语句:

$(document).ready(function(){
    $("form").submit(function() {
    var input = $("#command_line").val();
    console.log(input);


    if (input.indexOf("help") > -1) {
        if (input == "help") {
            $("#message_help").clone().insertBefore("#placeholder").fadeIn(1000);
        }
    }       
});

$("#command_line").val("");

});

为什么需要在字符串“help”上使用indexOf的第二个if语句?我查了indexOf,了解它的功能,但我认为它们都做了相同的事情?

在第一个示例中,这实际上是一个打字错误。请看第二个示例中的这一行:

$("#message_help").clone().insertBefore("#placeholder").fadeIn(1000);
您有
insertBefore(“#占位符”)
,它查找ID为“占位符”的元素,并在其前面插入
克隆

在第一个示例中,您跳过了
#
,因此它正在寻找一个不存在的“占位符”标记(例如:
)。因此,元素将成功地
克隆
d,但将在不插入任何内容后插入

  • $('div')
    将返回页面上的所有
    s
  • $('.pie')
    将返回页面上具有“pie”类的所有元素
  • $('#pie')
    将返回页面上ID为“pie”的元素

它应该能工作。这条线肯定有问题:

    $("#message_help").clone().insertBefore("#placeholder").fadeIn(1000);
可能
#占位符
#消息(u help
或两者都不存在


为什么要使用if(输入==“帮助”)而不是工作代码段中显示的if(输入==“帮助”)?你会做小提琴吗?两者看起来都应该有效。你的结论是错误的,因此你的事实是错误的。不幸的是,你的代码太绝密,我们看不到一个实际的例子,所以这就是我得到的。谢谢。这就是问题所在。@MichaelSmith很高兴我能帮上忙:)如果这个答案解决了你的问题,请随意接受!