我是JavaScript的新手,想知道如何使用相同的类名动态创建多个div。我有以下代码,但它只创建一个div的实例。
<div id="wrapper">
<div id="container">
<div id="board">
<script>
var board = document.createElement('div');
board.className = "blah";
for(x=0; x<9;x++) {
document.getElementById('board').appendChild(board);
}
</script>
</div>
</div>
</div>
答案 0 :(得分:3)
现在,您正在循环中创建元素 ,并将元素元素一次又一次地附加到DOM中。
您要做的是在循环的每次迭代期间创建一个新元素。要做到这一点,移动在循环中创建新div的部分:
for(x=0; x<9;x++) {
var board = document.createElement('div');
board.className = "blah";
document.getElementById('board').appendChild(board);
}
现在,每次循环运行时,您都会创建一个新元素,并将该元素追加到ID为#board
的元素。
值得指出的是,您创建的变量(board
)现在只在此循环中具有范围。这意味着一旦循环完成,您需要找到一种不同的方式来访问新元素,如果您需要修改它们。
答案 1 :(得分:2)
只创建了一个元素。
<script>
var board = document.createElement('div');
board.className = "blah";
for(x=0; x<9;x++) {
document.getElementById('board').appendChild(board);
}
</script>
应写成:
<script>
for(x=0; x<9;x++) {
var board = document.createElement('div');
board.className = "blah";
document.getElementById('board').appendChild(board);
}
</script>
答案 2 :(得分:1)
其他人确实简单地回答了这个问题;这里有一种方法可以解决您和提议的代码片段中存在的一些问题,并可能为您提供进一步探索的一些见解。我希望它有所帮助:)
为了稍微扩展一个脚本,这个解决方案通过使用函数createDiv创建每个元素,并且对各个div的引用存储在一个数组中,因此您可以通过修改数组元素来修改每个div的内容。 DOM元素。 (在这个例子中,为了演示,我修改了第6个div)
注意:
/*jslint browser:true */
(function () {
"use strict";
function createDiv() {
var boardDiv = document.createElement("div");
boardDiv.className = "new-div";
boardDiv.innerText = "I am new DIV";
return boardDiv;
}
function createAndModifyDivs() {
var board = document.getElementById("board"),
myDivs = [],
i = 0,
numOfDivs = 9;
for (i; i < numOfDivs; i += 1) {
myDivs.push(createDiv());
board.appendChild(myDivs[i]);
}
myDivs[5].className = "modified-div";
myDivs[5].innerText = "I'm modified DIV";
}
createAndModifyDivs();
}());
&#13;
.new-div {
color: gray;
}
.modified-div {
color: red;
}
&#13;
<!DOCTYPE html>
<html>
<head>
<title>Inserting Divs</title>
</head>
<body>
<div id="wrapper">
<div id="container">
<div id="board">
</div>
</div>
</div>
</body>
</html>
&#13;