javascript - 输入文件为空时不运行函数
问题描述
如果我插入png它可以工作,如果我插入jpg它可以工作,但是如果我将文件留空它就不起作用,为什么?该文件应该是 png 或空的。
function myFunction() {
var fileTypecheck = document.getElementById("file").files[0].type.replace(/(.*)\//g, '');
if(fileTypecheck == "png" || fileTypecheck.length == 0){
alert("File is png or 0");
}else{
alert("File is NOT png or 0");
}
}
<input type="file" name="file" id="file" onchange="loadFile(event)" accept="image/png">
<button onclick="myFunction()">Click me</button>
解决方案
当没有文件时,索引files[0]
不存在。您可以添加一个问号 ( Optional_chaining ),files[0]
这样它就不会在没有文件时崩溃。然后您可以更改fileTypecheck.length== 0
为,!fileTypecheck
因为当没有文件时它将是未定义的。
function myFunction() {
var fileTypecheck = document.getElementById("file").files[0]?.type.replace(/(.*)\//g, '');
if(fileTypecheck == "png" || !fileTypecheck){
alert("File is png or 0");
}else{
alert("File is NOT png or 0");
}
}
<input type="file" name="file" id="file" accept="image/png">
<button onclick="myFunction()">Click me</button>
推荐阅读
- c# - Dapper 查询结果到 datagridview
- python - 如何按键访问 pybind11::dict
- mongodb - 如何使用 MongoDB API 从 Cosmos DB 获取 N 个随机文档?
- python - requests.get(url) 没有返回这个特定的 url
- python - 我想知道如何在 python-vlc 中编写音频播放回调
- javascript - React JS 将数据或子组件传递给父组件
- azure-timeseries-insights - 从原始数据构建累积变量/聚合
- bash - 为什么 bash 后增量运算符设置非零结果代码?
- laravel-8 - request()->validate() 在 n laravel 8 左右第二次不起作用
- excel - 分块和超越 Laravel