javascript - 追加到 DOM 后,div 标签内的 div 标签不会出现

标签 javascript css

<分区>

我正在编写一个函数来创建两张卡片 - 一张是方形的,另一张是圆形的,在单击按钮时显示。当按下另一个按钮时,将添加更多样式。 但我遇到的问题是 div squareMainID 和 roundMainID 它们在 div 中具有相同数量的 div。当 div 显示在 DOM 上时,只会显示 roundMainId 的 div 标签和子标签(见图)。如果您可以看到开发工具,则 roundMainID 旁边的黑色箭头是可折叠的。 SqaureMainID 不一样。甚至我尝试应用的样式也只应用于 roundMainID 而不是正方形。为什么会发生这种情况以及如何解决?

enter image description here

代码:

var pick= document.getElementById("pick");
var attachCardsDiv = document.createElement("div");
attachCardsDiv.className += "attach-cards-div"
var squareMainDiv = document.createElement("div");
squareMainDiv.className = "cardsPanel";
squareMainDiv.setAttribute("id", "squareMainID"); 
var roundMainDiv = document.createElement("div");
roundMainDiv.className = "cardsPanel"; 
roundMainDiv.setAttribute("id", "roundMainID"); 
var classADiv = document.createElement("div");
var classBDiv = document.createElement("div");
var apple = document.createElement("div");
var banana = document.createElement("div");


function attachTwoCardsOnDom(){
  classBDiv.appendChild(banana);
  classBDiv.appendChild(apple);
  classADiv.appendChild(classBDiv)
  squareMainDiv.appendChild(classADiv).addEventListener('click', 
    function(event){
    console.log("clicked");
  });
  attachCardsDiv.appendChild(squareMainDiv);
  document.body.appendChild(attachCardsDiv);


// ************************************************************


  classBDiv.appendChild(banana);
  classBDiv.appendChild(apple);
  classADiv.appendChild(classBDiv)
  roundMainDiv.appendChild(classADiv).addEventListener('click', 
  function(event){
    console.log("clicked");
  });
  attachCardsDiv.appendChild(roundMainDiv);
  document.body.appendChild(attachCardsDiv);
}



pick.addEventListener('click', function(event){       
  attachTwoCardsOnDom();
})

html:

<button id="pick">Press</button>

最佳答案

在:

var classADiv = document.createElement("div");
var classBDiv = document.createElement("div");
var apple = document.createElement("div");
var banana = document.createElement("div");

您只需创建一次 div,然后在:

function attachTwoCardsOnDom(){
  classBDiv.appendChild(banana);
  classBDiv.appendChild(apple);
  classADiv.appendChild(classBDiv)

您只需移动它们

也就是说,您实际上是在向 squareMainDiv 添加内容,但稍后在将 div 添加到 roundMainDiv 时,您会将它们从中删除。

修复:您必须每次都重新创建 div:

function attachTwoCardsOnDom(){
  var classADiv = document.createElement("div");     // creating here
  var classBDiv = document.createElement("div");     // creating here
  var apple = document.createElement("div");         // creating here
  var banana = document.createElement("div");        // creating here

  classBDiv.appendChild(banana);
  classBDiv.appendChild(apple);
  classADiv.appendChild(classBDiv)
  squareMainDiv.appendChild(classADiv).addEventListener('click', 
    function(event){
    console.log("clicked");
  });
  attachCardsDiv.appendChild(squareMainDiv);
  document.body.appendChild(attachCardsDiv);


// ************************************************************

  var classADiv2 = document.createElement("div");     // creating here, different name
  var classBDiv2 = document.createElement("div");     // creating here, different name
  var apple2 = document.createElement("div");         // creating here, different name
  var banana2 = document.createElement("div");        // creating here, different name


  classBDiv2.appendChild(banana2);                    // notice classBDiv2 (2!)
  classBDiv2.appendChild(apple2);                     // and on...
  classADiv2.appendChild(classBDiv2)
  roundMainDiv.appendChild(classADiv2).addEventListener('click', 
  function(event){
    console.log("clicked");
  });
  attachCardsDiv.appendChild(roundMainDiv);
  document.body.appendChild(attachCardsDiv);
}

演示 JSFiddle:https://jsfiddle.net/acdcjunior/s41ax3rb/3/

关于javascript - 追加到 DOM 后,div 标签内的 div 标签不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49419830/

上一篇:javascript - 使用 jquery 向下滚动后表未固定在顶部

下一篇:javascript - 倒数计时器 Javascript 在线代码外部脚本

相关文章:

html - 带有图像和文本的 CSS 面板

javascript - 如何使用 Jquery 和类选择器获取元素第一个子文本?

javascript - 淡入具有相同 id 的元素

Javascript动态地将函数附加到对象

javascript - 围绕场景旋转相机

javascript - 谁能解释这种关于字符串连接的奇怪 JS 行为?

javascript - 如何仅在 slider 进入视口(viewport)后才开始自动播放 Swiper slider ?

javaScript 对象过滤器返回未定义

jquery - 如何一次只显示一个div

javascript - 选择时更改背景颜色