javascript - 怎么用原生js获取img高度
阿神
阿神 2017-04-10 16:40:08
0
5
358

如题
怎么用原生js获取img高度,img没有设置height属性

<img id="img" src="wait.png" height="24">这种方式offsetHeight可以获取高度

如果是这么写<img id="img" src="wait.png"> offsetHeight clientHeight都不行

最新发现,就chrome不行。Firefox,IE的 offsetHeight,clientHeight,height都可以。chrome版本为47.0.2526.73 m,但是用jq img.height()却可以喔。

以下方法是不行的(就chrome不行,IE Firefox都可以)

    <img id="img2" src="img/big-icon.png">
    <script type="text/javascript">
        var img = document.getElementById('img2');
        console.log(img.height);
        console.log(img.offsetHeight);
    </script>

以下方法是是可以的,就加了onload

    <img id="img2" src="img/big-icon.png">
    <script type="text/javascript">
        window.onload = function() {
            var img = document.getElementById('img2');
            console.log(img.height);
            console.log(img.offsetHeight);
        }
    </script>

我会之后再在别的地方试试看是否是浏览器坏了

阿神
阿神

闭关修行中......

全部回复(5)
阿神
var img = document.getElementById('imgId');
imgHeight = img.height; // img元素本来就有height属性

你可以遍历一下元素属性:

var img = document.getElementById('imgId');
for(var x in img){
    console.log(x+":"+img[x]);
}

在chrome里输出:

width:24 // 图片实际渲染的宽
height:24
naturalWidth:64 // 图片原来的宽
naturalHeight:64
Peter_Zhu
var img = document.getElementById('imgId');
imgHeight = img.offsetHeight;
PHPzhong

因为不在onload执行的话,s这段script会在image下载到浏览器之前执行,此时img元素还只是一个空节点。因此要等到图片被渲染出来之后计算尺寸

黄舟

是因为没加onload的话,有时候图片还没加载完成,自然js就无法获取到它的高度。

大家讲道理

也不知道你的为啥不行,不行就贴代码。

<img id="img" src="http://ubmcmm.baidustatic.com/media/v1/0f0005yYIsGLBGDGfPud10.png">
<script type="text/javascript">
window.onload=function(){
    var img = document.getElementById('img');
    console.log(img.height);
    console.log(img.offsetHeight);
}
</script>    

图片设置高度的话会取到设置的,没设置的话是原始高度300px

我猜你是js写在图片前边了吧?

------补充你评论的问题----

<img id="img2" src="/usr/local/var/www/test/mac-noise-reduction.png">
<script type="text/javascript">
window.onload=function(){
    var img = document.getElementById('img2');
    console.log(img.height);
    console.log(img.offsetHeight);
}
</script>    

这样,也是可以正常获取到高度的,图片信息见下图:

---补充--
回复评论失败,好像是bug。
之前疏忽没加onload,不加的话表示页面加载到js就执行js,但此时页面的一些外部元素比如图片,CSS可能没加载完成,所以当然是取不到值的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!