在for循环中使用变量绘制对象时如何防止变量覆盖

How to prevent variable overwriting when using it in for loop to paint objects

提问人:8hoursking 提问时间:9/7/2023 更新时间:9/7/2023 访问量:31

问:

我想使用 JS 原生脚本创建 HTML 对象。我有一个函数,它绘制了一些文本,我想优化它。

当我使用它时,它必须在 HTML 中使用循环中编写一些文本以进行几次不同的迭代,但我发现 new 循环不会在 HTML 中生成新对象,而是重制以前的对象。

    paintPrimary: (id, alias, country, date, content) => {
        let primaryArray = ['Alias', 'Country', 'Date', 'Description'];
        console.log(primaryArray);
        const $primary = document.createElement('div');
        $primary.className = 'teamHeaders';

        for (let primaryCounter = 0; primaryCounter < primaryArray.length; primaryCounter ++) {
            $primary.innerHTML = primaryArray[primaryCounter];
            document.getElementById(id).appendChild($primary);
        }
    }

我尝试使用构造函数但没有成功。每次都想为每次迭代创建一个新变量,但我不知道该怎么做,也没有找到任何信息

JavaScript HTML 网页

评论

0赞 Felix Kling 9/7/2023
因为你不是在循环中创建元素。您在循环之前创建一个元素,然后在循环中更改它。在循环中也创建元素。

答:

0赞 brk 9/7/2023 #1

在循环中创建元素。在您的情况下,您只创建一次,因此它正在覆盖divdiv

paintPrimary: (id, alias, country, date, content) => {
  let primaryArray = ['Alias', 'Country', 'Date', 'Description'];
  for (let primaryCounter = 0; primaryCounter < primaryArray.length; primaryCounter++) {
    // changed here
    const $primary = document.createElement('div'); 
    $primary.className = 'teamHeaders';
    $primary.innerHTML = primaryArray[primaryCounter];
    document.getElementById(id).appendChild($primary);
  }
}
0赞 Shawn 9/7/2023 #2

试试这个:

paintPrimary: (id, alias, country, date, content) => {
    let primaryArray = ['Alias', 'Country', 'Date', 'Description'];
    console.log(primaryArray);

    for (let primaryCounter = 0; primaryCounter < primaryArray.length; primaryCounter++) {
        const $primary = document.createElement('div');
        $primary.className = 'teamHeaders';
        $primary.innerHTML = primaryArray[primaryCounter];
        document.getElementById(id).appendChild($primary);
    }
}

当您多次调用时,它将为每次调用创建单独的 div 元素集,而不是覆盖之前的内容。paintPrimary