You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为width属性增加值异常:预期每次+1px实际+20-30px

问题原因

你遇到的问题是因为getAttribute("width")返回的是字符串类型,直接和数字1相加时会执行字符串拼接而非数值加法。比如初始宽度是"50",第一次计算后变成"501",第二次变成"5011",浏览器解析这个超大的字符串宽度时会自动缩放到合理范围,看起来就像是每次增加了几十像素。

修复方案

需要把获取到的宽度值转换为数值类型后再进行加法运算,推荐用parseInt()或者Number()转换:

修正后的代码

<img id="testimage" src="wall.png" width="50" height="25"/>
setInterval(function() {
    var im = document.getElementById("testimage");
    // 将字符串宽度转为数值类型
    var currentWidth = parseInt(im.getAttribute("width")) || 0;
    var newWidth = currentWidth + 1;
    im.setAttribute("width", newWidth);
    // 打印数值验证变化
    console.log(newWidth);
}, 200);

更简洁的写法(直接操作DOM元素属性)

DOM元素本身的width属性会直接返回数值,不需要额外转换:

setInterval(function() {
    var im = document.getElementById("testimage");
    im.width += 1;
    console.log(im.width);
}, 200);

内容的提问来源于stack exchange,提问作者samuraiskiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 19:20:37