javascript - 检查多个上传输入 - 未定义的变量
问题描述
我正在尝试检查上传文档的大小到 2 个单独的输入字段,我得到了
类型错误:fileUpload1.files[0] 未定义
但是有一个 if 语句可以避免这种情况但不起作用(如果没有附加上传)
我尝试移动 if 语句的位置,但同样的问题,我是否遗漏了一些明显的东西,JS 如下:
<script type="text/javascript">
function Upload() {
var fileUpload = document.getElementById("Evidence11");
var fileUpload1 = document.getElementById("Evidence12");
if (typeof (fileUpload1.files) != "undefined") {
var size1 = parseFloat(fileUpload1.files[0].size / 1024).toFixed(0);
}
if (typeof (fileUpload.files) != "undefined") {
var size = parseFloat(fileUpload.files[0].size / 1024).toFixed(0);
size = parseFloat(size) + parseFloat(size1);
if (size >= 4096) {
alert(
"File too Big, please select a file less than 4mb");
document.getElementById("demo").innerHTML = "The file too big(" + size + "kb), please select a file less than 4mb.";
} else {
document.getElementById("demo").innerHTML = "File size is less that 4mb (" + size + "KB) and ok to continue.";
var element = document.getElementById("nextBButton");
element.classList.add("revButton");
}
} else {
alert("This browser does not support HTML5.");
}
}
</script>
<?php } ?>
解决方案
您正在检查 files 属性是否未定义,默认情况下它是一个类似数组的对象,因此它通过了检查,因为 fileUpload.files 不是 null 而是一个[object FileList]
. 但 fileUpload.files[0] 为空,因为其中没有元素,您可以检查文件数组中的第一项是否为空,或检查其长度。
if (fileUpload1.files[0]) {
//do your thing
}
推荐阅读
- apache-spark - java.lang.NoClassDefFoundError:在 IntelliJ 和 SBT 中找不到 org/slf4j/Logger 类
- javascript - Javascript Fetch - How to Fix Failed to Fetch 错误(可能来自在 HTTPS 站点上发出 HTTP 请求?)
- git - 尽管我使用了 -wait 和 -w,但在使用 git commit 时由于提交消息为空而中止提交
- sockets - HTTP 客户端是否总是等待单个 TCP 连接的响应?
- spring - 了解使用 Spring 对 REST api 服务进行约束验证的位置
- javascript - 如何从rails 6中的json获取数据到Angular?
- python - 对 pandas 数据框行中的合并值运行 T 检验
- c - 从函数返回的指向静态分配结构的指针究竟如何?
- python - OpenCV中的相机发布问题
- python - 我无法通过 discord.py 获得某些公会