【问题标题】:How to appendChild(element) many times. (The same element)如何多次追加 Child(element)。 (相同的元素)
【发布时间】:2022-12-04 09:59:05
【问题描述】:

我的问题是: 是否可以在不重写相同变量的情况下添加相同的元素。 我正在创建一个滑块,我需要将带有类 slide-eldiv 附加到块 slider 中。 这是代码的一部分

    var body, html, sliderBody, btnLeft, btnRight, i, parts, vHeight, vWidth;
//Variable definitions
var i = 0,
    parts = 3,

    //Main html elements
    body = document.body,
    html = document.element,

    //viewport Height and Width
    vHeight = window.innerHeight,
    vWidth = window.innerWidth,

    sliderBody = _id("slider"),
    btnLeft = _id("btn-left"),
    btnRight = _id("btn-right"),

    urls = ["http://www.wallpapereast.com/static/images/pier_1080.jpg",
            "http://www.wallpapereast.com/static/images/pier_1080.jpg",
            "http://www.wallpapereast.com/static/images/pier_1080.jpg",
            "http://www.wallpapereast.com/static/images/pier_1080.jpg"];

    slide = _createEl("div");
    slide.className += "slide-el";

function _id(el){
  return document.getElementById(""+ el +"");
}
function _createEl(el){
  return document.createElement(""+ el +"");
}
window.onload = function(){
  slideLayout();
}

function slideLayout(){
  for(var i=0; i < urls.length; i++){
    sliderBody.appendChild(slide);
  }
}

问题是我不能多次附加相同的元素。它只创建一个元素而不是 4 个。

为了让你更好地理解,我做了一个小提琴:

https://jsfiddle.net/ud7dvn3z/

【问题讨论】:

  • 扩展@smerny 的评论:节点的.cloneNode() 方法将返回节点的副本而不是节点本身,允许您多次使用相同的基节点。要同时复制节点的子节点,您需要使用slide.cloneNode(true) 来执行深复制。

标签: javascript jquery element appendchild


【解决方案1】:

appendChild 将在将节点附加到新位置之前将其从任何位置删除,因此您需要制作该节点的副本。您可以为此使用cloneNodetrue 使 cloneNode 执行深度克隆,即使用其所有子节点。

for(var i = 0; i < urls.length; i++){
  sliderBody.appendChild(slide.cloneNode(true));
}

【讨论】:

  • .cloneNode(true) 为我工作
【解决方案2】:

好的伙计们!我找到了答案。我必须把

slide = _createEl("div");
slide.className += "slide-el";

进入for循环。 现在它看起来像这样:

for(var i=0; i < urls.length; i++){
  slide = _createEl("div");
  slide.className += "slide-el";
  sliderBody.appendChild(slide);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    相关资源
    最近更新 更多