将图像包装在 JS 中动态创建的 div 中

瓦甘托

我很难用 JS 中动态创建的 div 包装我的图像。这是我使用的代码:

var images = document.getElementsByTagName("img");
for(var i = 0; i < images.length; i++) {
    var wrapper = document.createElement("div");
    wrapper.appendChild(images[i]);
    mainpictureframe.appendChild(wrapper);

    wrapper.style.background = "red";
}
* {
    margin: 0;
    padding: 0;
    font-size: 15px;
}
 
img{ 
	max-width:236px;
}
<main id="mainpictureframe"> 
                <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge1" title="16by9-1"/>
                <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge2" title="16by9-1"/>
                <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge3" title="16by9-1"/>
                <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge4" title="16by9-1"/>
                <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge5" title="16by9-1"/>

                <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample1" title="4by3-1"/>
                <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample2" title="4by3-1"/>
                <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample3" title="4by3-1"/>
                <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample4" title="4by3-1"/>
                <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample5" title="4by3-1"/>
</main>

看起来它正确地创建了 div,但只将第二个图像打包到一个 div 中。

谢谢您的帮助

易卜拉欣·马里尔

解释:

getElementsByTagName返回一个实时的 HTMLCollectionLive意味着 HTMLCollection 反映了 DOM。如果某些元素被移除,HTMLCollection 会相应地缩小。

由于您从循环的开头开始循环,因此有些元素会被抛在后面。

如果图像的 HTMLCollection 是:

[a, b, c, d].

然后:

i = 0 and length = 4
a  b  c  d
^
i

然后a从集合中删除并i增加,下一步:

i = 1 and length = 3
b  c  d
   ^
   i

c被移除b并将被跳过,因为b现在在位置0(因为a被移除)并且i1where cis。

.... 等等。

这就解释了为什么一张图片被包裹而另一张没有......

使固定:

而不是for循环,只需创建一个while循环,检查是否有静止图像:

var images = document.getElementsByTagName("img");
var mainpictureframe = document.getElementById("mainpictureframe");

var len = images.length;
while (len--) {
    var wrapper = document.createElement("div");
    var image = mainpictureframe.removeChild(images[0]);
    wrapper.appendChild(image);
    mainpictureframe.appendChild(wrapper);
}

工作小提琴:

var images = document.getElementsByTagName("img");
var mainpictureframe = document.getElementById("mainpictureframe");

var len = images.length;
while (len--) {
  var wrapper = document.createElement("div");
  var image = mainpictureframe.removeChild(images[0]);
  wrapper.appendChild(image);
  mainpictureframe.appendChild(wrapper);
}
* {
  margin: 0;
  padding: 0;
  font-size: 15px;
}

img {
  max-width: 236px;
}

div {
  padding: 5px;
  border: 5px solid red;
}
<main id="mainpictureframe">
  <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge1" title="16by9-1" />
  <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge2" title="16by9-1" />
  <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge3" title="16by9-1" />
  <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge4" title="16by9-1" />
  <img src="http://cdn.wallpapersafari.com/61/30/us7TlD.jpg" alt="Stonehenge5" title="16by9-1" />

  <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample1" title="4by3-1" />
  <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample2" title="4by3-1" />
  <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample3" title="4by3-1" />
  <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample4" title="4by3-1" />
  <img src="http://www.freecomputerdesktopwallpaper.com/new_wallpaper/5_4_3_2_1_Happy_New_Year_freecomputerdesktopwallpaper_p.jpg" alt="otherexample5" title="4by3-1" />
</main>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将表格包装在div中

来自分类Dev

将每个图像包装在div中并添加一个数字

来自分类Dev

使用LazyYT.js延迟加载,将youtube视频包装在响应图像“框架”中

来自分类Dev

将 php 生成的内容包装在 div 包装中

来自分类Dev

如何将 div 包装在新的 div 中?

来自分类Dev

将图像包装在Bootstrap行中的链接中

来自分类Dev

将<img>元素包装在<div>中,但允许使用<a>标签

来自分类Dev

使用jQuery将img包装在div中

来自分类Dev

将<li>项的范围包装在div容器中

来自分类Dev

根据相同的值将数组元素包装在div中

来自分类Dev

将每个导航元素包装在div中是否合适?

来自分类Dev

将元素的内容包装在“ .content” div中

来自分类Dev

将<img>元素包装在<div>中,但允许使用<a>标签

来自分类Dev

Bootstrap 将内容包装在输入组 div 中

来自分类Dev

如何将图像包装在winforms listview中?

来自分类Dev

使用 D3.js 将每五个 svg 元素包装在一个 div 中

来自分类Dev

通过“jQuery方法”创建元素后如何将元素包装在div中?

来自分类Dev

为什么将Web内容包装在包装器div中?

来自分类Dev

如何使用jQuery将href包装在div包装器中

来自分类Dev

将 2 种元素类型的每次迭代包装在单独的包装器 div 中

来自分类Dev

如何动态地将文本以自定义形式(例如圆圈)包装在div中

来自分类Dev

列出要包装在 div 中的项目

来自分类Dev

将每两个 div 包装在每个父 div 中的一个 div 中

来自分类Dev

对于循环,将每两个帖子包装在一个div中

来自分类Dev

AngularJS-将嵌套的<select>包装在<div>中的形式使其控件不再绑定

来自分类Dev

如何将img宽度的百分比包装在特定的div宽度中?

来自分类Dev

如何在不滚动的情况下将长文本包装在div中

来自分类Dev

如何在某个元素之后将所有元素包装在div中?(jQuery的)

来自分类Dev

TinyMCE-将多个元素包装在一个div中

Related 相关文章

  1. 1

    将表格包装在div中

  2. 2

    将每个图像包装在div中并添加一个数字

  3. 3

    使用LazyYT.js延迟加载,将youtube视频包装在响应图像“框架”中

  4. 4

    将 php 生成的内容包装在 div 包装中

  5. 5

    如何将 div 包装在新的 div 中?

  6. 6

    将图像包装在Bootstrap行中的链接中

  7. 7

    将<img>元素包装在<div>中,但允许使用<a>标签

  8. 8

    使用jQuery将img包装在div中

  9. 9

    将<li>项的范围包装在div容器中

  10. 10

    根据相同的值将数组元素包装在div中

  11. 11

    将每个导航元素包装在div中是否合适?

  12. 12

    将元素的内容包装在“ .content” div中

  13. 13

    将<img>元素包装在<div>中,但允许使用<a>标签

  14. 14

    Bootstrap 将内容包装在输入组 div 中

  15. 15

    如何将图像包装在winforms listview中?

  16. 16

    使用 D3.js 将每五个 svg 元素包装在一个 div 中

  17. 17

    通过“jQuery方法”创建元素后如何将元素包装在div中?

  18. 18

    为什么将Web内容包装在包装器div中?

  19. 19

    如何使用jQuery将href包装在div包装器中

  20. 20

    将 2 种元素类型的每次迭代包装在单独的包装器 div 中

  21. 21

    如何动态地将文本以自定义形式(例如圆圈)包装在div中

  22. 22

    列出要包装在 div 中的项目

  23. 23

    将每两个 div 包装在每个父 div 中的一个 div 中

  24. 24

    对于循环,将每两个帖子包装在一个div中

  25. 25

    AngularJS-将嵌套的<select>包装在<div>中的形式使其控件不再绑定

  26. 26

    如何将img宽度的百分比包装在特定的div宽度中?

  27. 27

    如何在不滚动的情况下将长文本包装在div中

  28. 28

    如何在某个元素之后将所有元素包装在div中?(jQuery的)

  29. 29

    TinyMCE-将多个元素包装在一个div中

热门标签

归档