Practice Set, Week 8, Modifying the DOM, Problem 2

by subsari

HTML

<h3>Practice Set #2, Week 8, Modifying the DOM</h3>

<p>We're going to practice the steps of manually creating an adding a DOM element to a page. To do this, we'll create a DIV with id="myNewDiv" that contains some text, and attach it to the div already on this page with id="addNewOneHere". If you've done it right, it will appear with a red background.</p>
<p>Hint: There's five steps here, as shown in the lessons, particularly lesson 3 section 2, the TOC example in Video 8.6, and the <a href="http://javascript.info/tutorial/modifying-document#creating-elements" target="blank">readings on javascript.info</a>. You'll have to:
    <ol>
        <li>create a 'DIV' element node and assign it to a variable</li>
        <li>using setAttribute(), give it an ID attribute of "myNewDiv"</li>
        <li>create a text node with some text of your choosing, and assign it to a variable</li>
        <li>append you text node to your element</li>
        <li>append your new element to the existing div which has id="addNewOneHere"</li>
    </ol>
</p>
<div id="addNewOneHere">This is the div where you'll add your new element using Javascript.  </div>

CSS

div#addNewOneHere div#myNewDiv {
    background-color:red;
}

JavaScript

// your solution here
var app = {
	load: function(){
		var div = app.createElement("div"); // #1 - create div variable
		var text = app.createTextNode("Hello World"); // #3 - create text node variable
		
		app.setAttribute(div, "id", "myNewDiv"); // #2 - assign attribute
		app.appendToNode(div, text); // #4 - append node
		app.appendToNode(app.getElement("addNewOneHere"), div); // #5 - append to div
	},
	getElement: function(elementId){
		return window.document.getElementById(elementId);
	},
	createElement: function(elementName){
		return window.document.createElement(elementName);
	},
	createTextNode: function(nodeText){
		return window.document.createTextNode(nodeText);
	},	
	setAttribute: function(element, attribute, value){
		element.setAttribute(attribute, value);
	},
	appendToNode: function(element, node){
		element.append(node);
	}
};

app.load();