在下面的代码中,我需要在函数中读取变量的值ext(在函数内部定义reader.onloadend)xhr.onreadystatechange。眼下正在回归undefined。任何想法如何解决这个问题?function file_upload(file_input) { var name = file_input.dataset.target; var url = file_input.dataset.url; var path = file_input.dataset.path; var ext; for(var i = 0; i<file_input.files.length; i++) { var file = file_input.files[i]; var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var id = xhr.responseText; var input = document.createElement("input"); input.setAttribute("type", "hidden"); input.setAttribute("name", name); input.setAttribute("value", id); document.getElementById("btn_uload_"+name+"_"+ext).append(input); document.getElementById("empty_file").style.display = 'none'; document.getElementById("single_file_"+ext).style.display = 'block'; } }; var reader = new FileReader(); reader.onloadend = function() { var bytes = reader.result; var ext = file.name.split(".").pop(); var formData = new FormData(); formData.append('bytes', bytes); formData.append('type', ext); xhr.send(formData); } reader.readAsDataURL(file); }}
1 回答
倚天杖
TA贡献1828条经验 获得超3个赞
var ext =...从只为该函数创建局部变量的读取器回调中删除(它没有设置外部变量。即使您删除var关键字以便它开始设置外部ext变量,您最终也会遇到此 q&a 中讨论的问题
将您的分配移动到循环的顶部(而不是函数的顶部)。并使用它let代替var这种方式,它是块范围的,不会遇到前面提到的问题
for(var i = 0; i<file_input.files.length; i++) {
var file = file_input.files[i];
let ext = file.name.split('.').pop();
添加回答
举报
0/150
提交
取消