• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
麦兜家园
优秀是一种习惯
博客园    首页    新随笔    联系   管理    订阅  订阅
jq获取img高度(动态生成的image高度为0原因)

关于图片是比较特殊,最近公司在做一个项目遇到一个问题便是图片高度总是为0。最后研究了一下,主要原因是:图片是在DOM结构渲染完成以后调用的,这时候网页中一些资源还没有加载,比如图片等资源,但是DOM结构已经渲染成功了 。

因为项目中经常用的是jquery,所以,解决图片高度的时候就要在window.onload=function(){}里调用,当然若是需在$(function(){})里的调用img的高度,那么就需要这样来写:

$("galleryImg").get(0).onload = function (){ //$("galleryImg")是选择器
          //var picH=document.getElementById("galleryImg").height;原生写法
          //var picW=document.getElementById("galleryImg").width;原生写法
             var picH=$("#galleryImg").height();
             var picW=$("#galleryImg").width();
                    };

这样,也就是说在某一块dom渲染出来的时候,同时去加载图片,所以这个时候图片的高度也就有了。

所以,主要原因就是:当我们在$(function(){})调用$('img').height()的时候,由于图片还没有加载,所以这时候<img>标签的高度就是0,所以返回值就是0。但是当你用window.onload=function(){}调用的时候,图片已经加载出来了,所以这时候就能得到图片的高度。 

所以记得,$(function(){})是在DOM渲染结束,资源还没有加载的时候执行的,如果你想获取到一些资源的信息,这个时候是没有办法的哦!

posted on 2018-05-08 14:49  麦兜家园  阅读(3638)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3