这是我的表格
<form action="#" enctype="multipart/form-data" method="post" name="..." id="formPhoto" class="fmp">
<input type="file" name="pho" id="photo" class="inph" accept="image/*">
<button type="submit" id="subFormPhoto" class="spp">press here</button>
</form>
这是我的代码JS
<script type="text/javascript">
var inputPhoto= document.getElementById('photo');
inputPhoto.onchange=function(){var photo= this.value; photo.onload=function(){alert(this.width+' '+this.height);};};
</script>
我的问题是没有可视化alert(this.width+' '+this.height);
。
好像没有加载photo
答案 0 :(得分:0)
this.value
将文件名称作为字符串,因此您的photo.onload
函数并非真正查看照片,而只是一些字符串。如果您alert
或console.log
photo
,您会看到我的意思。
您可能希望考虑使用File API,它可以在HTML 5中使用现代浏览器。
以下是您的代码的工作示例:
var inputPhoto = document.getElementById('photo');
inputPhoto.onchange = function() {
var file = this.files[0];
var reader = new FileReader();
var photo = new Image();
reader.readAsDataURL(file);
reader.onload = function(_file) {
photo.src = _file.target.result;
photo.onload = function() {
alert(this.width + ' ' + this.height);
};
};
};
答案 1 :(得分:0)
我试图从你的问题中创造我所理解的东西 http://jsfiddle.net/qo8ovmhn/
<input type="file" name="pho" id="photo" class="inph" onchange="myFunction()">
<img id="view" src=""></img>
<p id="demo"></p>
<script>
function myFunction() {
var x = document.getElementById("photo");
var file = x.files[0];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(_file) {
var img = document.getElementById("view");
img.setAttribute("src",_file.target.result);
var height = img.offsetHeight;
var width = img.offsetWidth;
alert(width + " X " + height);
};
}
</script>
看看这是否是你想要的。 选择图像时调用输入的更改事件。读取图像字节并将其放入图像标记中。然后从图像分量的高度和宽度获取图像的尺寸。 您可以通过添加css样式的visibility来隐藏图像:hidden或opacity:0 不要显示:none,因为这会导致高度和宽度为0px
最后,尺寸显示在警报中。