【问题标题】:how to create more than one element in the DOM with js using a for loop?如何使用 for 循环在 DOM 中创建多个元素?
【发布时间】:2020-06-24 04:07:41
【问题描述】:

好吧,我想要得到的结果是我的div 元素应该与数组 具有相同数量的p 元素。

为了做到这一点,我尝试使用for loop,但它只是创建一个 p 元素,所以我没有工作。

任何人都知道如何做到这一点? (我刚学js)。

const diccionario = () => {
    var dama = ["bird:pajaro", "car:carro", "house:csa", "camis"];

    document.getElementById("dic").addEventListener("click", () => {
        var pes = document.createElement("p");
        for(var i = 0;  i < dama.length; i++){
            pes.innerHTML = dama[i];
            document.getElementById("cuadro").appendChild(pes);     
        }
    })
}

【问题讨论】:

  • var pes 第 1 行向下移动(在 for 循环内),您就可以开始了。

标签: javascript html loops for-loop dom


【解决方案1】:

您需要在循环内创建元素。如果您在循环之外创建它,那么当您调用appendChild 时,它将从之前在 DOM 中的任何位置中删除:

const diccionario = () => {
    var dama = ["bird:pajaro", "car:carro", "house:csa", "camis"];

    document.getElementById("dic").addEventListener("click", () => {
        for(var i = 0;  i < dama.length; i++){
            var pes = document.createElement("p"); // <----------------
            pes.innerHTML = dama[i];
            document.getElementById("cuadro").appendChild(pes);     
        }
    })
}

appendChild 不会创建现有元素的副本 - 相反,它只是附加现有元素。

【讨论】:

  • 如果有人在外部创建元素并在内部使用cloneNode 克隆它而不是使用createElement 会提高性能吗?
  • 我试过了,但我没有看到明显的区别。
  • @Kenny 当某个答案解决了您的问题时,您可以考虑将其标记为已接受(选中左侧的复选框)以表明问题已解决:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-07
  • 1970-01-01
  • 2014-06-06
相关资源
最近更新 更多