javascript - 如何使用 JavaScript 获取图像的宽度和高度?

标签 javascript html

我尝试使用以下代码获取图像宽度和高度,但我收到的所有内容都是未定义的。

谁能向我解释一下这是如何工作的?

<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

确实需要等待img元素存在并加载img

如果您使用脚本添加图像,并设置src之前 Hook 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 中的图像来完成此操作,但您只需考虑到在 Hook 事件之前图像可能已经加载的可能性:

<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>

关于javascript - 如何使用 JavaScript 获取图像的宽度和高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33548885/

相关文章:

javascript - 如何添加多个对象到同一个索引中

javascript - 如何将 QUnit 测试集成到 Yii 中

javascript - 为什么我的 JS 正则表达式匹配得比它应该的多?

css - Webkit CSS 来控制输入 [type=color] 中颜色周围的框?

html - 使用屏幕大小缩放字体大小?

javascript - 如何将正文中的文本内容复制到剪贴板

javascript - 在 Angular js 中实现多选下拉菜单

javascript - 使用特定标签检查 jQuery 添加类到单选按钮

html - 如何在长度为 2 列的行之间制作边框?

jquery - 从 "data"标签中获取文本并加载动画