Javascript TypeError:undefined不是对象(正在计算'msg.innerHTML=“Upload ready…”;)

Javascript TypeError:undefined不是对象(正在计算'msg.innerHTML=“Upload ready…”;),javascript,image-uploading,Javascript,Image Uploading,我发现了一个演示文件/图像上传验证 我已将此脚本应用于我的表单,并收到以下错误。注意:我已经用缺少的分号更新了脚本,但是仍然收到以下错误: TypeError:undefined不是计算“msg.innerHTML=Upload ready…”的对象 该错误将注意力引向以下行: mime.match(RegExp(accepted, 'i')) ? size > max ? (input.form.reset(), msg.innerHTML = max + "KB Exceeded!")

我发现了一个演示文件/图像上传验证

我已将此脚本应用于我的表单,并收到以下错误。注意:我已经用缺少的分号更新了脚本,但是仍然收到以下错误:

TypeError:undefined不是计算“msg.innerHTML=Upload ready…”的对象

该错误将注意力引向以下行:

mime.match(RegExp(accepted, 'i')) ? size > max ? (input.form.reset(), msg.innerHTML = max + "KB Exceeded!") : msg.innerHTML = "Upload ready..." : (input.form.reset(), msg.innerHTML = accepted + " file type(s) only!");

一个问题是小提琴中的脚本包装器

但另一个问题是类型,有时当使用未知的文件类型时,类型将是空字符串,而mimetype将未定义,因此mime的值将变得未定义

一种解决方案是只使用未定义类型的mimetype

另一个是检查mime是否在以下条件中具有值

//客户端的图像/文件验证 函数getImginput,max,已接受{ var upImg=新图像, 测试,大小,msg=input.form; msg=msg.elements[0]。子元素[0]; 返回input.files?验证:upImg.src=input.value,upImg.onerror=upImg.onload=validate; 功能验证{ test=input.files?input.files[0]:upImg; size=test.size | | test.fileSize/1024; mime=test.type | | test.mimeType; mime&&mime.matchRegExpaccepted,'i'?大小>最大值?input.form.reset,超出msg.innerHTML=max+KB!:msg.innerHTML=Upload ready…:input.form.reset,msg.innerHTML=accepted+仅限文件类型!; } } 图像上传
可能意味着msg是未定义的,而不是您认为的。哦,一个元素也不能有任何innerHTML——它们总是空的。不要使用wrap-in,否则JSFIDLE中的脚本将被包装,并且您的函数getImg超出范围。@Cheery搞错了in@cpardon,您是在哪里发现丢失的分号的?-没有缺少分号!我尝试了你的两种解决方案。仍然得到相同的错误。@cpardon附带的演示似乎对我有用。。。您是否有重新创建问题的更新版本。。。或者,您是否能够使用上面的演示重新创建问题?您的更新在代码片段和js FIDLE中都有效。但是当我将脚本添加到表单标记下面的我的身体时。不确定?@ArunPJohny,jpg文件扩展名的mime类型,是:jpeg。你为什么要加jpg?!
mime = (typeof test.type == 'undefined'? test.mimeType:test.type);