javascript - יצירה של <div> והוספה של <div> באופן דינמי


אני מנסה ליצור <div> בצורה דינמית, עם <div> נוסף שמתווסף בתוכה. עד כה יש לי את זה וזה עובד:

var iDiv = document.createElement('div');
iDiv.id = 'block';
iDiv.className = 'block';
document.getElementsByTagName('body')[0].appendChild(iDiv);

אני פשוט נתקל בבעיה ביצירת והוספת ה-div השני ל-div הראשון.

בעצם אני רוצה לעשות את זה כסימון הסופי:

<div id="block" class="block">
   <div class="block-2"></div>
</div>

תשובה #1

השתמש באותו התהליך. כבר יש לך את המשתנה iDiv שמצביע עדיין על האלמנט המקורי <div id='block'> שיצרת. אתה רק צריך ליצור <div> נוסף ולהפעיל את appendChild().

// Your existing code unmodified...
var iDiv = document.createElement('div');
iDiv.id = 'block';
iDiv.className = 'block';
document.getElementsByTagName('body')[0].appendChild(iDiv);

// Now create and append to iDiv
var innerDiv = document.createElement('div');
innerDiv.className = 'block-2';

// The variable iDiv is still good... Just append to it.
iDiv.appendChild(innerDiv);

http://jsfiddle.net/W4Sup/1/

סדר יצירת האירועים לא חייב להיות כפי שצויין למעלה. אתה יכול גם להוסיף את ה-innerDiv החדש ל-div החיצוני לפני שאתה מוסיף את שניהם ל-<body>.

var iDiv = document.createElement('div');
iDiv.id = 'block';
iDiv.className = 'block';

// Create the inner div before appending to the body
var innerDiv = document.createElement('div');
innerDiv.className = 'block-2';

// The variable iDiv is still good... Just append to it.
iDiv.appendChild(innerDiv);

// Then append the whole thing onto the body
document.getElementsByTagName('body')[0].appendChild(iDiv);

תשובה #2

var iDiv = document.createElement('div');

iDiv.id = 'block';
iDiv.className = 'block';
document.getElementsByTagName('body')[0].appendChild(iDiv);

var div2 = document.createElement('div');

div2.className = 'block-2';
iDiv.appendChild(div2);