document.getElementById().value在ie下不起作用,在火狐中可以
这是一个上传图片在本地预览的功能,JS检测超过大小限制后把input type="file"里的内容清空,阻止上传,在火狐下用
document.getElementById("imgfile").value="";这句完美清空,但是在IE下这句不起作用,什么原因呢。
<HTML>
<head>
<script type="text/javascript" src="img1.js"></script>
</head>
<BODY>
<form>
<table>
<tr>
<td class="left1">
图片
</td>
<td>
<div style="float: left">
<IMG name='mypic' id='mypic' SRC="" width=100 height=100 BORDER="1">
</div>
<div style="float: left" align=left>
<INPUT name='imgfile' id="imgfile" TYPE="file" onchange="viewmypic(mypic,imgfile);" size=40 >
</div>
</td>
</tr>
</table>
</form>
</body>
</html>
img1.js
function viewmypic(mypic,imgfile) {
var url,ImgFileSize,ImgWidth,ImgHeight,FileExt;//全局变量 图片相关属性
var AllowImgFileSize=50; //允许上传图片文件的大小 0为无限制 单位:KB
var ImgObj=new Image();
if(ImgObj.complete){
ImgObj.onload;
}
if(isFirefox=navigator.userAgent.indexOf("Firefox")>0){
ImgObj.src=imgfile.files[0].getAsDataURL();
ImgFileSize=Math.round(imgfile.files[0].fileSize/1024*100)/100;
}
else{
ImgObj.src=imgfile.value;
ImgFileSize=Math.round(ImgObj.fileSize/1024*100)/100;//取得图片文件的大小
}
if(AllowImgFileSize<ImgFileSize)
{
alert("请上传小于"+AllowImgFileSize+"KB的文件,当前文件大小为"+ImgFileSize+"KB");
document.getElementById("imgfile").value=""; //就是这一句话,在IE下没有成功执行。。。。。。。。。。。。
mypic.src="";
return;
}
mypic.src=ImgObj.src;
mypic.style.display="";
mypic.border=1;
}
------解决方案--------------------
HTML code
<body>
<input type="file" value="" id="tFile" />
<input type="button" value="ClearFile" onclick="clearFile()" />
<script type="text/javascript">
function clearFile() {
var file = document.getElementById('tFile');
file.value = "";
if ( file.value ) {
if ( document.all ) {
with( file.parentNode.insertBefore(document.createElement('form'), file)) {
appendChild(file); reset(); removeNode(false);
}
} else {
file.type = "text"; file.type = "file";
}
}
}
</script>
</body>