如何使用JavaScript获取图像的宽度和高度
How to get the width and height of my image with JavaScript?
我正试图通过使用以下代码来获取图像的宽度和高度,但我收到的都是未定义的。
有人能向我解释一下这是怎么回事吗?
<script>
var img = new Image();
img = document.getElementById("top");
alert(this.width + 'x' + this.height);
</script>
<body>
<div id="ad">
<div id="banner">
<img class="top" id="top" src="frame_2.jpg"/>
</div>
</div>
</body>
首先,如果要从文档中获取图像,则不需要调用new Image
。
do需要等待,直到img
元素存在,并且直到img
加载。
如果您使用脚本添加图像,并在设置src
:之前挂接load
事件,这是最简单的
<body>
<div id="ad">
<div id="banner"></div>
</div>
<script>
var img = document.createElement('img')
img.className = "top";
img.id = "top";
img.onload = function() {
alert(this.width + 'x' + this.height);
};
img.src="frame_2.jpg";
document.getElementById("banner").appendChild(img);
</script>
</body>
您可以使用HTML中的图像进行操作,不过,您只需要考虑到在钩住事件之前图像可能已经加载的可能性:
<body>
<div id="ad">
<div id="banner">
<img class="top" id="top" src="frame_2.jpg"/>
</div>
</div>
<script>
var img = document.getElementById("top");
img.onload = loaded;
if (img.complete) {
loaded();
}
function loaded() {
if (img) {
alert(img.width + 'x' + img.height);
img.onload = null;
img = null; // Just as a marker in case of repeated calls
}
};
</script>
</body>
this
很可能指向Window
。请尝试使用img.width
和img.height
。
试试这个:
img = document.getElementById("top");
img.onload = function() {
alert(img.width + 'x' + img.height);
};
<div id="ad">
<div id="banner">
<img class="top" id="top" src="http://fpoimg.com/300x300"/>
</div>
</div>
如果以后用DOM上查询的元素重新分配该变量,则不需要创建Image的实例。。。
顺便说一句,您需要等待Dom Ready或Window Loaded(指示用于媒体对象)事件。。。
document.addEventListener('DOMContentLoaded', function() {
var img = document.querySelector('.my-image');
document.querySelector('#result').innerHTML = img.width + ' x ' + img.height;
});
<h1 id="result"></h1>
<img src="http://www.keenthemes.com/preview/conquer/assets/plugins/jcrop/demos/demo_files/image1.jpg" class="my-image" />
我正试图通过使用以下代码来获得我的图像宽度和高度,但我收到的都是未定义的。
这是因为您试图在创建图像之前在DOM中选择图像。
如果你想获得图像尺寸,你可以做很多方法。如果你想简单地检查它们,你可以执行内联:
<body>
<div id="ad">
<div id="banner">
<img class="top" id="top" src="frame_2.jpg" onload="console.log(this.width + ' x ' + this.height + ' px');"/>
</div>
</div>
</body>
您可以通过clientWidth
和clientHeight
获得此功能。
var width = img.clientWidth;
var height = img.clientHeight;
请参阅clientWidth和clientHeight
CSS和其他样式-可能会改变问题的结果。
使用属性:naturalWidth和naturalHeight
它们提供正确的图像大小。
为什么不尝试简单的jQuery?
var imageWidth = $('#top').width();
var imageHeight = $('#top').height();
alert(imageWidth + 'x' + imageHeight);
相关文章:
- 使用JavaScript根据窗口/视口的高度动态调整图像大小
- 如果宽度是百分比,如何设置以px为单位的图像高度
- 根据图像高度添加类
- 图像宽度和高度,无拉伸或溢出
- 自动缩放图像以匹配文本高度
- 使用asp.net FileUpload时从javascript获取图像宽度和高度
- whay可以't我使用javascript同时更改图像的高度和宽度
- Cloudinary上传小部件-样式上传预览图像(宽度和高度)
- 尝试使用window.innerHeight和Javascript设置图像高度
- 如果我将宽度调整为另一个值,找出我的图像的高度
- Javascript图像宽度和高度未定义值
- 我想根据容器中包含的图像设置容器的高度
- 高图表图像渲染器自动高度
- 灯箱类型的东西,使图像成为浏览器高度的百分比
- 如何在浏览器宽度/高度变化时动态调整图像网格的大小
- 当溢出-x 设置为隐藏时处理可变高度图像的最佳方法是什么?
- 在画布HTML5中查找上传的宽度和高度图像.(带文件读取器)
- 使用JavaScript查找图像的高度-图像加载错误
- 将悬停效果应用于响应高度图像
- 垂直居中可变高度图像,同时保持最大宽度/高度