用于检查文件扩展名不工作的Javascript If语句
Javascript If statement used to check file extensions not working
我有一个表单,人们可以在其中输入文件路径。我想确保他们进入的路径指向图片,所以这里是我认为可行的。
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语句的主体。如果您想在extensions
的值是支持的值之一时执行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.
}
作为冗长的替代方案,使用正则表达式:
if (extension.search(/jpg|gif|bmp|png/) === -1) {
alert("The file extension you have entered is not supported.");
}
您应该使用&&
而不是||
,并且您必须在每个条件下用extension
作为!=
运算符的前缀,而不仅仅是第一个条件:
if (extension != "jpg" &&
extension != "gif" &&
extension != "bmp" &&
extension != "png" &&
extension != "whatever else")
您需要在每个子句中包含要进行比较的参数。
if( extension != "jpg" ||
extension != "gif" ||
extension != "bmp" ||
extension != "png" ||
extension != "whatever else"){
//TODO: handle condition
}
正如其他人所指出的,这是一个逻辑错误,因为如果"jpg"是扩展名,则条件仍然会被满足,因为"jpg!="gif"。您可能需要考虑使用&&
。
您必须比较每个测试扩展的变量extension
。一种紧凑的方法是:
var extension = whatever;
var supportedExtensions = ["jpg","gif","bmp","png",... whatever else];
if (supportedExtensions.indexOf(extension) < 0) alert("Unsupported extension");
其他答案向您展示了用于多次比较的javascript逻辑是错误的。但是,一个更好的方法是使用这样的javascript映射:
function checkExt() {
var allowedExtensions = {
"jpg": true, "gif": true, "bmp": true, "png": true, "whatever else":true
};
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 (allowedExtensions[extension] !== true) {
alert("The file extension you have entered is not supported");
}
}
只需在allowedExtensions
对象中添加/删除项,即可更容易地维护。
相关文章:
- 带有多个elseif的Javascript if语句
- Javascript:If-then语句在函数中不起作用
- for循环中的javascript if语句找不到==
- JavaScript if-else 速记错误
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- 将 HTML 添加到 Javascript IF 函数
- Javascript if和else语句不起作用
- PHP代码中实现的JavaScript |if语句不起作用
- JavaScript if/else未按预期操作
- 加载页面后的JavaScript if语句
- JavaScript IF.ELSE条件未输出预期值
- JavaScript if else 语句来显示 html 标签
- javascript if block 的奇怪行为
- 在 JavaScript IF 语句中使用匿名函数
- 基于下拉菜单值的 Javascript if 语句
- 我需要在javascript if语句中使用jquery来动画元素的颜色
- JavaScript if() 语句未按预期计算
- Javascript:IF语句,用于根据秒更改文本的颜色
- 需要一个用于评分系统的 JavaScript IF 语句