ฉันจะสร้างและจัดวาง div โดยใช้ JavaScript ได้อย่างไร


คำตอบ:


273

var div = document.createElement("div");
div.style.width = "100px";
div.style.height = "100px";
div.style.background = "red";
div.style.color = "white";
div.innerHTML = "Hello";

document.getElementById("main").appendChild(div);
<body>
<div id="main"></div>
</body>

var div = document.createElement("div");
div.style.width = "100px";
div.style.height = "100px";
div.style.background = "red";
div.style.color = "white";
div.innerHTML = "Hello";

document.getElementById("main").appendChild(div);
OR
document.body.appendChild(div);

document.bodyการอ้างอิงใช้ผู้ปกครองแทน


ฉันรู้ว่านี่เก่า แต่การเพิ่มคลาสและ CSS ที่เกี่ยวข้องจะเป็นวิธีที่ทันสมัยกว่า แต่นั่นเป็นคำถามที่แตกต่าง
Mark Schultheiss

63

ขึ้นอยู่กับว่าคุณทำมันอย่างไร จาวาสคริปต์เพียว:

var div = document.createElement('div');
div.innerHTML = "my <b>new</b> skill - <large>DOM maniuplation!</large>";
// set style
div.style.color = 'red';
// better to use CSS though - just set class
div.setAttribute('class', 'myclass'); // and make sure myclass has some styles in css
document.body.appendChild(div);

การทำ jQuery โดยใช้วิธีเดียวกันนั้นเป็นเรื่องง่าย:

$('body')
.append('my DOM manupulation skills dont seem like a big deal when using jquery')
.css('color', 'red').addClass('myclass');

ไชโย!


4
ฉันจะไม่พูดว่า jQuery ง่ายกว่าส่วนใหญ่จะสั้นกว่านี้ แต่แทนที่จะใช้ setAttribute สำหรับชั้นเรียนฉันจะใช้ div.className = 'myclass';
Daan Wilmer

4
jQuery นั้นง่ายกว่ามากเมื่อคุณเริ่มพัฒนา javascript หนัก ๆ เนื่องจากมันรวบรวมรูปแบบการทำงานของการเขียนโปรแกรมจากการเดินทางทำให้รหัสของคุณดูและทำงานได้ดี ในกรณีที่จุด: อาแจ็กซ์โดยใช้ js พื้นเมือง VS jQuery :)
jrharshath

3
การเรียก jQuery "ฟังก์ชั่น" เป็นสิ่งที่สำคัญมาก คุณจะกำหนดรูปแบบการใช้งานได้อย่างไรและคุณคิดว่า jQuery เป็นอย่างไร?

jquery ดีมากถ้าคุณมี 10 บรรทัดในใบสมัครของคุณ ยินดีต้อนรับสู่นรกถ้าคุณสร้างแอปพลิเคชันที่จริงจังกับมัน ความกะทัดรัดไม่ได้เป็นการเขียนโปรแกรมที่ดีโดยอัตโนมัติ /
Hal50000

ส่วน jQuery ที่นี่ไม่ได้ผนวกdivดังนั้นไม่ตอบคำถาม
Mark Schultheiss

10

ในขณะที่คำตอบอื่น ๆ ที่นี่ทำงานฉันสังเกตเห็นว่าคุณขอ div กับเนื้อหา ดังนั้นนี่คือเวอร์ชันของฉันพร้อมเนื้อหาเพิ่มเติม ลิงก์ JSFiddle ที่ด้านล่าง

JavaScript (พร้อมความคิดเห็น):

// Creating a div element
var divElement = document.createElement("Div");
divElement.id = "divID";

// Styling it
divElement.style.textAlign = "center";
divElement.style.fontWeight = "bold";
divElement.style.fontSize = "smaller";
divElement.style.paddingTop = "15px";

// Adding a paragraph to it
var paragraph = document.createElement("P");
var text = document.createTextNode("Another paragraph, yay! This one will be styled different from the rest since we styled the DIV we specifically created.");
paragraph.appendChild(text);
divElement.appendChild(paragraph);

// Adding a button, cause why not!
var button = document.createElement("Button");
var textForButton = document.createTextNode("Release the alert");
button.appendChild(textForButton);
button.addEventListener("click", function(){
    alert("Hi!");
});
divElement.appendChild(button);

// Appending the div element to body
document.getElementsByTagName("body")[0].appendChild(divElement);

HTML:

<body>
  <h1>Title</h1>
  <p>This is a paragraph. Well, kind of.</p>
</body>

CSS:

h1 { color: #333333; font-family: 'Bitter', serif; font-size: 50px; font-weight: normal; line-height: 54px; margin: 0 0 54px; }

p { color: #333333; font-family: Georgia, serif; font-size: 18px; line-height: 28px; margin: 0 0 28px; }

หมายเหตุ: CSS ที่ยืมมาจาก Ratal Tomal

JSFiddle: https://jsfiddle.net/Rani_Kheir/erL7aowz/



5

นี่คือทางออกหนึ่งที่ฉันจะใช้:

var div = '<div id="yourId" class="yourClass" yourAttribute="yourAttributeValue">blah</div>';

หากคุณต้องการให้ค่าแอททริบิวต์และ / หรือแอททริบิวต์เป็นไปตามตัวแปร:

var id = "hello";
var classAttr = "class";
var div = '<div id='+id+' '+classAttr+'="world" >Blah</div>';

จากนั้นเพื่อผนวกเข้ากับร่างกาย:

document.getElementsByTagName("body").innerHTML = div;

ง่ายเหมือนพาย


ฉันควรเขียนอะไรในหน้า html
Md. Nahiduzzaman Rose

1
เราจำเป็นต้องระบุเมื่อใช้[0] getElementsByTagName()(สั้นเกินไปสำหรับการแก้ไข)
HKJeffer

2

คุณสามารถสร้างเช่นนี้

board.style.cssText = "position:fixed;height:100px;width:100px;background:#ddd;"

document.getElementById("main").appendChild(board);

ตัวอย่างโค้ดที่รันได้สมบูรณ์:

var board;
board= document.createElement("div");
board.id = "mainBoard";
board.style.cssText = "position:fixed;height:100px;width:100px;background:#ddd;"
    
document.getElementById("main").appendChild(board);
<body>
<div id="main"></div>
</body>


2

สร้าง div ด้วยชื่อ id

var divCreator=function (id){
newElement=document.createElement("div");
newNode=document.body.appendChild(newElement);
newNode.setAttribute("id",id);
}

เพิ่มข้อความให้กับ div

var textAdder = function(id, text) {
target = document.getElementById(id)
target.appendChild(document.createTextNode(text));
}

รหัสทดสอบ

divCreator("div1");
textAdder("div1", "this is paragraph 1");

เอาท์พุต

this is paragraph 1

1

อีกสิ่งหนึ่งที่ฉันชอบคือการสร้างวัตถุแล้ววนลูปผ่านวัตถุและตั้งค่าลักษณะเช่นนั้นเพราะมันสามารถเขียนทุกสไตล์ทีละอันได้น่าเบื่อ

var bookStyles = {
   color: "red",
   backgroundColor: "blue",
   height: "300px",
   width: "200px"
};

let div = document.createElement("div");

for (let style in bookStyles) {
 div.style[style] = bookStyles[style];
}

body.appendChild(div);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.