我有这样的 HTML 代码:
<div> box 1 </div> // my whole code
我想在 img
和 text
以及 div box 1 之后创建多元素 in div box 1
我想创建另一个 div
、img
和 text
。
我想要的插图是这样的:
<div>
box 1 // my whole code before add those below
<img> icon.jpg </img>
<h1> some text </h1>
</div>
<div>
box 2
<img> icon.jpg </img>
<h1> some text </h1>
</div>
<div>
box 3
<img> icon.jpg </img>
<h1> some text </h1>
</div>
我在函数上创建了一个事件来显示框和图标以及框内的一些文本,
这是我的代码:
const clickSearch = document.querySelector(".btn0").addEventListener("click",() => {
let ValuE = document.querySelector("#inPut").value
let putDiv = document.createElement("div")
putDiv.id = "flex-container-01"
putDiv.textContent = ValuE
let addD = document.querySelector(".flex-container")
addD.appendChild(putDiv)
let imgage = document.createElement("img")
image.src = "icon.gif"
let divDone = document.querySelector("#flex-container-01")
divDone.after(image)
})
但是我的代码是这样添加到 HTML 上的:
<div> box 1 </div> // my whole code
<img> icon.jpg </img>
<img> icon.jpg </img>
<img> icon.jpg </img>
<h1> text </h1>
<h1> text </h1>
<h1> text </h1>
<div> box 2 </div>
<div> box 3 </div>
<div> box 4 </div>
最佳答案
请查看此 working example
我示例中的代码将生成 3 次以下 HTML:
<div id="...">
box number
<img src="..."></img>
<h1>...</h1>
</div>
window.onload = ()=>{
let newDiv;
let newImage;
let newHeader;
let newHeaderText;
let newTextNode;
let lineBreak;
for(let i = 0; i < 3; i++) {
// create the container div
newDiv = document.createElement('div');
// create a new img element
newImage = document.createElement('img');
// create a new header element
newHeader = document.createElement('h1');
// create the text for the header element above
newHeaderText = document.createTextNode('some text');
// some text based on your example
newTextNode = document.createTextNode(`Box ${i + 1}`);
// a line break (br)
lineBreak = document.createElement('br');
// assign an id to the div
newDiv.id = `flex-container-${i}`;
// assign the source of the img element
newImage.src = 'https://via.placeholder.com/32x32';
// put that "box-[num]" text inside the div
newDiv.appendChild(newTextNode);
// add in the line break
// newDiv.appendChild(lineBreak);
// put the img element inside the div
newDiv.appendChild(newImage);
// put the headerText inside the h1 element
newHeader.appendChild(newHeaderText);
// put the header element inside the container div
newDiv.appendChild(newHeader);
// put the newly created div inside the body of our page (or document)
document.body.appendChild(newDiv);
}
};
<html>
<body>
</body>
<html>
如果您希望这一生成发生在单击事件上,只需将代码放入适当的事件处理程序中而不是 window.onload
:)
关于javascript - 如何在 vanilla javascript 中通过 DOM 创建多个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52700090/