[英]How to append one div container with another div container using appendChild() in JavaScript?
我设计了一个简单的 HTML 表单。 我试图通过在 JavaScript 中获取用户输入的数据在同一页面上动态显示卡信息。 我在调用我创建的函数时遇到问题,在按下提交按钮时被调用。 该函数第一次被正确调用,但是一旦用户输入第二个信息并单击“提交”按钮,该函数就会被调用并且它与第一张卡片重叠......任何帮助将不胜感激。
这是 HTML:
<form action="" id="enrol">
<div class="container">
<h1>Enrol</h1>
<p>Please fill in this form to get enrolled.</p> <hr />
<label for="name"><b>Name</b></label>
<input id="name" type="text" placeholder="Enter Name" name="name" required>
<label for="img"><b>Image</b></label>
<input type="file" id="img" name="image" required/>
<label for="dsc"><b>Description</b></label>
<input id="dsc" type="text" placeholder="Describe yourself in a few lines" name="dsc" required>
<button id="btn" type="button" class="registerbtn" onclick="showCard(); reset();">Submit</button> <hr/>
</div>
</form>
这是 JavaScript:
//Showing Card
function showCard() {
//get values
var name, desc, pic;
name = document.getElementById("name").value;
desc = document.getElementById("dsc").value;
pic = document.getElementById("img").files[0].name;
//create image object
var img = document.createElement("IMG");
img.setAttribute("width", "auto");
img.setAttribute("height", "125");
img.setAttribute("src", "img/" + pic);
//create layout
var mainDiv = document.createElement("div");
mainDiv.id = "main";
mainDiv.className = "container";
document.body.appendChild(mainDiv);
var div = document.createElement("div");
div.id = "row";
div.className = "row";
document.getElementById("main").appendChild(div);
var div2 = document.createElement("div");
div2.id = "class";
div2.className = "col-lg-6 col-md-6 col-sm-12 col-xs-12";
div2.innerHTML = "<label><b>Member # 1</b></label> <i>(Your card will look like this)</i>" + "<br />" + "<br />";
document.getElementById("row").appendChild(div2);
var div3 = document.createElement("div");
div3.id = "card";
div3.className = "card";
document.getElementById("class").appendChild(div3);
var div4 = document.createElement("div");
div4.id = "cardBody";
div4.className = "cardBody";
document.getElementById("card").appendChild(div4);
var div5 = document.createElement("div");
div5.id = "row1";
div5.className = "row";
document.getElementById("cardBody").appendChild(div5);
var div6 = document.createElement("div");
div6.id = "class";
div6.className = "col-lg-6 col-md-6 col-sm-12 col-xs-12";
div6.appendChild(img);
document.getElementById("row1").appendChild(div6);
var div7 = document.createElement("div");
div7.id = "class1";
div7.className = "col-lg-6 col-md-6 col-sm-12 col-xs-12";
div7.innerHTML = "<h4><b>" + name + "</b></h4>" + "<p>" + desc + "</p>";
document.getElementById("row1").appendChild(div7);
var button = document.createElement("button");
button.className = "btn-success";
button.innerHTML = "View Details";
document.getElementById("class1").appendChild(button);
}
问题是您的代码仍在引用第一张卡中的 div。 因此,任何新卡都将附加到旧卡上。 为此,您可以在此处添加一个全局计数器并为 div 添加动态 ID。 然后将为新 div 添加新卡,如下所示:
var counter= 0;
function showCard() {
counter++;
//get values
var name, desc, pic;
name = document.getElementById("name").value;
desc = document.getElementById("dsc").value;
pic = document.getElementById("img").files[0].name;
//create image object
var img = document.createElement("IMG");
img.setAttribute("width", "auto");
img.setAttribute("height", "125");
img.setAttribute("src", "img/" + pic);
//create layout
var mainDiv = document.createElement("div");
mainDiv.id = "main"+ counter;
mainDiv.className = "container";
document.body.appendChild(mainDiv);
var div = document.createElement("div");
div.id = "row"+ counter;
div.className = "row";
document.getElementById("main").appendChild(div);
var div2 = document.createElement("div");
div2.id = "class"+ counter;
div2.className = "col-lg-6 col-md-6 col-sm-12 col-xs-12";
div2.innerHTML = "<label><b>Member # 1</b></label> <i>(Your card will look like this)</i>" + "<br />" + "<br />";
document.getElementById("row").appendChild(div2);
var div3 = document.createElement("div");
div3.id = "card"+ counter;
div3.className = "card";
document.getElementById("class").appendChild(div3);
var div4 = document.createElement("div");
div4.id = "cardBody"+ counter;
div4.className = "cardBody";
document.getElementById("card").appendChild(div4);
var div5 = document.createElement("div");
div5.id = "row1"+ counter;
div5.className = "row";
document.getElementById("cardBody").appendChild(div5);
var div6 = document.createElement("div");
div6.id = "class"+ counter;
div6.className = "col-lg-6 col-md-6 col-sm-12 col-xs-12";
div6.appendChild(img);
document.getElementById("row1").appendChild(div6);
var div7 = document.createElement("div");
div7.id = "class1"+ counter;
div7.className = "col-lg-6 col-md-6 col-sm-12 col-xs-12";
div7.innerHTML = "<h4><b>" + name + "</b></h4>" + "<p>" + desc + "</p>";
document.getElementById("row1").appendChild(div7);
var button = document.createElement("button");
button.className = "btn-success";
button.innerHTML = "View Details";
document.getElementById("class1").appendChild(button);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.