Javascript If用于检查文件扩展名的语句不起作用

我有一个表单,人们可以在其中输入文件路径.我想确保他们输入的路径指向图片,所以这是我认为可行的.

function checkExt()
{
    var extension= /* I know that the code to cut the extension off of the file
                      is working correctly so for now let's just go with it ok */
    if(extension!="jpg" || "gif" || "bmp" || "png" || "whatever else")
        alert("The file extension you have entered is not supported");
}

但这不起作用.我已将其跟踪到if语句,因为如果我只选择一种文件来检查,那么它将正常工作.所以我的问题是你到底要改变什么才能使这个东西正常工作.我已经在这里待了大约三个小时了,这让我很生气.感谢您提前获得的所有帮助.

解决方法:

这是一种语法和逻辑错误.它应该是:

if (extension != "jpg" && 
    extension != "gif" && 
    extension != "bmp" && 
    extension != "png" && 
    extension != "whatever else") {
    // This will execute when the extension is NOT one of the expected 
    // extensions.
}

此外,您可以使用正则表达式更简洁地处理它:

if (!/jpg|gif|bmp|png|whatever/.test(extension)) {
    // This will execute when the extension is NOT one of the expected 
    // extensions.
}

附录:

当extension的值不是受支持的值之一时,上面的示例将执行if语句的主体.如果你想在扩展的值是支持的值之一时执行if语句的主体,你可以将逻辑从不等于/和更改为等于/或,如下所示:

if (extension == "jpg" || 
    extension == "gif" || 
    extension == "bmp" || 
    extension == "png" || 
    extension == "whatever else") {
    // This will execute when the extension is one of the expected extensions.
}

而且,使用正则表达式会更简洁:

// I just removed the leading ! from the test case.
if (/jpg|gif|bmp|png|whatever/.test(extension)) {
    // This will execute when the extension is one of the expected extensions.
}
上一篇:c – 运算符重载枚举


下一篇:c – 为什么对STL容器中存储的类禁止重载operator&()?