日期:2014-05-16  浏览次数:20403 次

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>