动态创建列表并在每个新创建的元素中添加 HTML 标签

Posted

技术标签:

【中文标题】动态创建列表并在每个新创建的元素中添加 HTML 标签【英文标题】:Dynamic creation of list and adding HTML Tags in the each newly created element 【发布时间】:2018-08-07 03:44:35 【问题描述】:

我在我的一个项目中使用 gridster,我的主要目标是动态创建小部件。我需要创建的小部件数量将来自后端(Django)。但现在我想编写一个简单的 javascript 代码动态创建小部件,我正在硬编码动态小部件数量的值 读了一点后,我发现了以下代码

<ul>
<script type="text/javascript">
var ul = document.createElement("ul");
document.body.appendChild(ul);

for (var i = 1; i <= 3; i++)

   var li = document.createElement("li");  
   li.className = "file";

   var a = document.createElement("a");
   a.innerhtml = 1;

  li.appendChild(a);
  ul.appendChild(li);


</script>

但我的一个 li 元素就像下面

 <li data-row="1" data-col="1" data-sizex="1" data-sizey="1"><button class="delete-button" style="float: right;">-</button><h3>1</h3></li>

所以在上面的代码中我要替换

a.innerHTML = 1; 

a.innerHTML =<button class="delete-button" style="float: right;">-</button>
<h3>3</h3>

但这根本不起作用。我什至知道这不是我想要的但这只是实际所需输出之前的一步

这只是我开始使用 jquery/javascript 和 gridster 的第二天 任何帮助将不胜感激

【问题讨论】:

“但这根本不起作用” - 难怪,因为这甚至不是有效/语法正确的 JavaScript。你首先需要学习一些 JavaScript 基础知识——最好是在你开始使用高级插件之前。 当你想将一个子元素添加到另一个元素时,你应该使用.append()。在这里阅读更多:developer.mozilla.org/en-US/docs/Web/API/ParentNode/append 例如:a.innerHTML =&lt;button class="delete-button" style="float: right;"&gt;-&lt;/button&gt; &lt;h3&gt;3&lt;/h3&gt; 应该是这样的:var button = document.createElement("button");a.append(button) 【参考方案1】:
a.innerHTML =<button class="delete-button" style="float: right;">-</button>
<h3>3</h3>

您正在尝试将元素附加到另一个元素。这意味着a 将成为父元素,buttonh3 将成为子元素。

为此,我们首先必须像这样创建button

var button = document.createElement('button');
button.classList.add('delete-button');
button.style.cssFloat = 'right';

然后我们创建h3:

var h3 = document.createElement('h3');
h3.innerHTML = '3';

然后我们将元素追加到a:

a.append(button);
a.append(h3);

这应该做你想做的:)

【讨论】:

谢谢 这对初学者很有帮助 对于 li 元素我可以像 li.data-row="1" 然后 li.data-col="1" 吗? @Rookie_123 为此使用setAttribute,有关如何使用它的示例可以在这里找到:plainjs.com/javascript/attributes/… 这仍然会创建无效的 HTML ...您根本无法将其他交互元素(例如按钮)放入链接中。 (不知道为什么 OP 觉得必须首先在此处插入链接。)

以上是关于动态创建列表并在每个新创建的元素中添加 HTML 标签的主要内容,如果未能解决你的问题,请参考以下文章

使用 PySpark 中的列表中的 withColumn 函数动态创建新列

R:根据列表元素名称创建新的数据框变量

创建动态 html 并在其中显示 json 值

在 DOM 中附加一个动态(新)创建的元素

动态创建或删除表单元素

添加新元素后 mCustomScrollbar 不更新