动态添加的html如何获取宽度,jquery动态添加元素后,获取元素宽度与实际宽度不一致...

本文探讨了一段JavaScript代码在动态添加HTML元素后,获取li元素宽度出现差异的现象。代码示例中,尽管在Chrome浏览器中元素审查显示offsetWidth和clientWidth均为56像素,但通过jQuery和原生JS打印的宽度却为41像素。博客作者在尝试理解这一差异的过程中遇到了困扰。文章详细分析了可能的原因,包括CSS样式、浏览器渲染机制等因素,并邀请读者共同探讨解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码如下

Slideout Demo

.product_list_con{

text-align: center;

}

.product_list{

display: inline-block;

}

.product_list li{

display: inline-block;

}

.product_list li img{

display: block;

}

var pros=[

{imgSrc:"app/images/img_home/pro_1.jpg",imgAlt:"产品1",productName:'产品1'},

{imgSrc:"app/images/img_home/pro_2.jpg",imgAlt:"产品1",productName:'产品1'},

{imgSrc:"app/images/img_home/pro_3.jpg",imgAlt:"产品1",productName:'产品1'},

{imgSrc:"app/images/img_home/pro_4.jpg",imgAlt:"产品1",productName:'产品1'},

{imgSrc:"app/images/img_home/pro_5.jpg",imgAlt:"产品1",productName:'产品1'},

{imgSrc:"app/images/img_home/pro_6.jpg",imgAlt:"产品1",productName:'产品1'},

{imgSrc:"app/images/img_home/pro_7.jpg",imgAlt:"产品1",productName:'产品1'},

{imgSrc:"app/images/img_home/pro_8.jpg",imgAlt:"产品1",productName:'产品1'}

];

var html="";

for(let i=0;i

html+=`

`+pros[i].imgAlt+`

`+pros[i].productName+`

`

}

var oProductList=$("#product_list");

oProductList.append(html);

console.log($("#product_list li").width())

console.log($("#product_list li"))

console.log(document.getElementsByTagName("li")["0"].offsetWidth);

// console.log(oProductList.children('li'));

效果图:

bVUNlX?w=1061&h=182

描述:

如代码所示,动态添加八个li到product_list 元素中,然后获取li的宽度,在谷歌浏览器中,元素审查实际宽度为如图所示:

bVUNm6?w=593&h=143

如图所示:

bVUNpz?w=540&h=86

依次为jquery打印元素li的宽度width、页面li元素、原生js打印offsetWidth;

检查元素的属性发现如下图所示:

bVUNrD?w=718&h=570

在这里看到offsetWidth和clientWidth都是56像素宽度,但是打印出的元素宽度却是41像素

百度不得其解,若你知道原因,请为我解惑,不胜感激!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值