javascript - 在js中更改img的来源并获得0的宽度?

标签 javascript html jquery dom

我目前正在尝试使用 jquery 设置图像 HTML 标记的来源,然后获取图像的高度和宽度。但是,当尝试使用以下代码执行此操作时,我得到的 width 为 0 并且与 height 相同:

$(document).ready(function() {
    
    $("#image").attr("src", "https://via.placeholder.com/600x160.png?text=Testing Image");
    console.log($("#image").width());
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
    <img id="image" />
</div>

我正在尝试这样做是为了更改同一 HTML 标记的图像 src 并获得新的宽度和高度。

我发现这是由于图像未加载到 DOM 中,所以我尝试了一些我在互联网上找到的东西作为以下两个片段,但结果相同,宽度为 0,高度为 0:

$(document).ready(function() {
    
    $(`<img id='image' src='${"https://via.placeholder.com/600x160.png?text=Testing Image"}'>`).appendTo('#container');
    console.log($("#image").width());
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
</div>

$(document).ready(function() {
    
    let image = new Image();
    image.src = "https://via.placeholder.com/600x160.png?text=Testing Image";
    image.id = "image";
    $('#container').append(image);
    console.log($("#image").width());
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
</div>

我不知道你是否能理解我的需求,但我非常感谢那里的帮助。

提前致谢。

最佳答案

您应该使用 load事件,以便等到图像加载并显示出来

见下面的片段:

使用 Jquery:

$(document).ready(function() {
    var $image = $("#image");
    $image.attr("src", "https://via.placeholder.com/600x160.png?text=Testing Image");
    $image.on("load", function() {
        console.log($(this).width(),"X",$(this).height());
    })
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="container">
    <img id="image" />
</div>

使用纯js:

    let image = new Image();
    image.src = "https://via.placeholder.com/600x160.png?text=Testing Image";
    image.id = "image";
    
    image.addEventListener("load", function(event) {
      console.log(this.width ,"x",this.height)
    });
    
    let container = document.getElementById("container")
    
    container.appendChild(image);
<div id="container" ></div>

关于javascript - 在js中更改img的来源并获得0的宽度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65982399/

相关文章:

javascript - 我想在边框样式的某行前面放置一些文本?这是 z-index 样式吗?

javascript - 为什么这个简单的 javascript 语句不能检查变量是否存在?

javascript - devExtreme TreeView 展开、滚动和聚焦

html - Bootstrap div 不正确堆叠

javascript - SVG 标题工具提示未显示在文本元素上

javascript - 使用 Javascript 捕获值输入字段并将其放入目标 URL 中

html - 创建响应式倾斜 Angular div 背景

javascript - Excel 到 JSON javascript 代码?

javascript - 缩短 jQuery Animate 函数并恢复为按键时启动

jquery - 粘性导航——通过 ID 导航留下内容