javascript - 刷新时宽度数组发生变化

标签 javascript jquery

我想要一个包含所有 .slide 元素宽度的数组 slide_widths:

$( document ).ready(function() {
  var $slider = $('.slider ul');
  var slider_width = $slider.width();
  var $slides = $('.slide');
  var slide_widths = $.map($slides, function(slide) {
    return slide.getBoundingClientRect().width;
  });

  console.log(slide_widths);
});

刷新页面时得到不同的结果:

1. [201.328125, 180, 214.28125, 180, 180, 180, 168.46875, 180, 145.078125, 144, 142.1875, 250.6875, 0, 0, 0, 0, 0, 0, 0, 0]

2. [201.328125, 180, 214.28125, 180, 180, 180, 168.46875, 180, 145.078125, 144, 142.1875, 250.6875, 155.515625, 180, 180, 176.03125, 0, 0, 0, 0]

我想当 console.log 输出一个数组时,这个 map 函数仍然有效?我怎样才能避免它?

最佳答案

您的函数似乎在元素实际加载之前就获取了元素宽度,因此尚未加载的元素返回的宽度为 0。

尝试使用 $(window).on("load", function() { 而不是 $(document).ready(function() {

$(window).on("load" 将等待页面上的所有元素加载,而 $(document).ready 则不会。

关于javascript - 刷新时宽度数组发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38747802/

相关文章:

javascript - 重写 appendChild()

javascript - CKEditor 改变了我所有的 HTML

javascript - 为什么我的 if 函数不以 "timer"变量为目标?我试图让它在计时器达到 0 时发出警报/控制台 "time is up"

javascript - 如果 div 不包含具有给定类的元素,则执行一些代码

javascript - react 热加载程序 3

jQuery 对话框内的 javascript setInterval() 在销毁或删除时不会停止

jQuery 循环遍历每个 div

jquery - 选择2多个: true not working

jquery - 如何使用 jquery 获取点击链接的 href?

javascript - jQuery 按类隐藏元素并不隐藏所有元素