var script = document.createElement("script");script.type = "text/javascript";script.src = "demo.js";document.body.appendChild(script);

从上图的结果中可以看到,上面代码在<body>元素中生成了一个<script>节点:
<script type="text/javascript" src="demo.js"></script>需要注意的是,在执行最后一行代码把<script>添加到页面之前,是不会下载外部脚本文件的。
var script = document.createElement("script");script.type = "text/javascript";script.appendChild(document.createTextNode("function fn1(){alert("hello wolrd!")} fn1();"));document.body.appendChild(script); 
上面的代码会在<body>元素中插入一段JavaScript代码:
<script type="text/javascript">function fn1(){alert("hello wolrd!")} fn1();</script> 执行上面的代码后会弹出提示框,显示“hello world!”文本。var script = document.createElement("script");script.type = "text/javascript";script.text("function fn1(){alert("hello wolrd!")} fn1();");document.body.appendChild(script); 像上面这样修改代码之后,在IE、Firefox、Safari3.0、Chrome和Opera浏览器中都可以运行。Safari3.0之前的浏览器虽然不能正确的执行text属性,但是可以使用文本节点来指定代码。所以如果需要支持旧版本的浏览器,可以像下面这样书写代码:var script = document.createElement("script");script.type = "text/javascript";var code = "function fn1(){alert("hello wolrd!")} fn1();";try{script.appendChild(document.createTextNode(code));}catch(e){script.text = code;}上面的代码首先尝试标准的DOM文本节点方法,因为除了旧版本的IE浏览器之外,其它浏览器都支持这种方式。如果这行代码抛出异常,那么说明是旧版本的IE浏览器,那就必须使用text属性。function loadScript(code){var script = document.createElement("script");script.type = "text/javascript";try{script.appendChild(document.createTextNode(code));}catch(e){script.text = code;}document.body.appendChild(script);} 要调用这个函数,可以像下面的样子:loadScript("function fn1(){alert("hello wolrd!")}"); 这种方式加载的代码会在全局作用域中执行,而且当脚本执行后立刻可用。实际上,这样执行代码与在全局作用域中把相同的字符串传递给eval()函数是一样的。var link = document.createElement("link");link.rel = "stylesheet"link.type = "text/css";link.href = "styles.css";var head = document.getElementsByTagName("head")[0];

以上的代码在所有主流的浏览器中都可以正常运行。需要注意的是<link>元素要添加到<head>元素中,而不是<body>元素中,才能保证在所有浏览器中的行为一致。
另外要注意的是,加载外部样式文件的过程是异步的,也就是说加载样式和执行JavaScript代码的过程没有固定的次序。
另外一种定义样式的方式是使用<style>元素来包含嵌入式的CSS样式。例如下面的代码:
var style = document.createElement("style");style.type = "text/css";style.appendChild(document.createTextNode("body{background:#f00;}"));var head = document.getElementsByTagName("head")[0];head.appendChild(link); 上面的代码执行后可以在<head>元素中动态添加下面的节点:<style type="text/css">background:#f00;</style>以上的代码可以在Firefox、Safari、Chrome和Opera浏览器中正常运行,在旧版本的IE浏览器中会报错。旧版本的IE浏览器会将<style>元素看做一个特殊的节点,不允许访问它的子节点。要解决旧版本IE的问题,就是访问元素的styleSheet属性,该属性又有一个cssText属性,可以接受CSS代码。例如下面的代码:
var style = document.createElement("style");style.type = "text/css";try{style.appendChild(document.createTextNode("body{background:#f00;}"));}catch(e){style.styleSheet.cssText = "body{background:#f00;}";} 同样,我们也可以将动态添加样式的代码封装到一个函数中,通过不同的参数来动态加载不同的样式。function loadStyle(code){var style = document.createElement("style");style.type = "text/css";try{style.appendChild(document.createTextNode(code));}catch(e){style.styleSheet.cssText = code;}var head = document.getElementsByTagName("head")[0];head.appendChild(style); } JavaScript对表格的操作//创建表格vatabldocument.createElement("table");table.borde1;table.widt"100%";//创建tbodyvatboddocument.createElement("tbody");table.appendChild(tbody);//创建第一个表格行tbody.insertRow(0);tbody.rows[0].insertCell(0);tbody.rows[0].cells[0].appendChild(document.createTextNode("单元1-1"));tbody.rows[0].insertCell(1);tbody.rows[0].cells[1].appendChild(document.createTextNode("单元2-1"));//创建第二个表格行tbody.insertRow(1);tbody.rows[1].insertCell(0);tbody.rows[1].cells[0].appendChild(document.createTextNode("单元1-2"));tbody.rows[1].insertCell(1);tbody.rows[1].cells[1].appendChild(document.createTextNode("单元2-2"));//将表格添加到文档中document.body.appendChild(table)使用上面的代码可以动态的在页面中创建一个表格。其中在创建表格行的时候,通过<tbody>元素调用了insertCell()方法,并传入参数0(表示将插入的行放在什么位置上)。执行了这一行代码后,会自动创建一个表格行,并将它插入到<tbody>元素的0位置上,此时就可以通过tbody.rows[0]来引用新插入的行。
var divs = document.getElementsByTagName("div");for(var i = 0; i < divs.length; i++){var div = document.createElement("div");document.body.appendChild(div);} 上面的代码首先获取了所有<div>元素的HTMLCollection,保存在一个变量中。由于这个集合是动态的,所以只要有新的<div>被添加到页面中,新的<div>元素就会被添加到这个集合中。这样导致的后果是div.length值是不断变化的,每次循环会在页面中添加一个<div>元素,length的值也会递增。这样i < divs.length条件就永远不会成立,导致死循环的发生。var divs = document.getElementsByTagName("div");for(var i = 0,len = divs.length; i < len; i++){var div = document.createElement("div");document.body.appendChild(div);} 由于len中保存了divs.length在循环开始时的一个快照,因此会避免死循环情况的发生。function sAlert(str){var msgw,msgh,bordercolor;msgw=400;//提示窗口的宽度msgh=100;//提示窗口的高度titleheight=25 //提示窗口标题高度bordercolor="#c51100";//提示窗口的边框颜色titlecolor="#c51100";//提示窗口的标题颜色var sWidth,sHeight;sWidth=screen.width;sHeight=screen.height;var bgObj=document.createElement("div");bgObj.setAttribute("id","bgDiv");bgObj.style.position="absolute";bgObj.style.top="0";bgObj.style.background="#cccccc";bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75";bgObj.style.opacity="0.6";bgObj.style.left="0";bgObj.style.width=sWidth + "px";bgObj.style.height=sHeight + "px";bgObj.style.zIndex = "10000";document.body.appendChild(bgObj);var msgObj=document.createElement("div")msgObj.setAttribute("id","msgDiv");msgObj.setAttribute("align","center");msgObj.style.background="white";msgObj.style.border="1px solid " + bordercolor;msgObj.style.position = "absolute";msgObj.style.left = "50%";msgObj.style.top = "50%";msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";msgObj.style.marginLeft = "-225px" ;msgObj.style.marginTop = -75+document.documentElement.scrollTop+"px";msgObj.style.width = msgw + "px";msgObj.style.height =msgh + "px";msgObj.style.textAlign = "center";msgObj.style.lineHeight ="25px";msgObj.style.zIndex = "10001";msgObj.style.position = "absolute";var box=document.getElementById(str);var title=document.createElement("h4");title.setAttribute("id","msgTitle");title.setAttribute("align","right");title.style.margin="0";title.style.padding="3px";title.style.background=bordercolor;title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";title.style.opacity="0.75";title.style.border="1px solid " + bordercolor;title.style.height="18px";title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";title.style.color="white";title.style.cursor="pointer";title.onmousedown=function(){startDrag(this,"msgDiv")};title.onmouseup=function(){stopDrag(this,"msgDiv")};title.onmousemove=function(){drag("msgDiv")};var closer=document.createElement("div");closer.onclick=function(){CloseReturn();document.body.appendChild(box);box.style.display = "none";document.body.removeChild(bgObj);document.getElementById("msgDiv").removeChild(title);document.body.removeChild(msgObj);};closer.innerHTML="确定";document.body.appendChild(msgObj);document.getElementById("msgDiv").appendChild(title);document.getElementById("msgTitle").appendChild(closer);box.style.display="inline";document.getElementById("msgDiv").appendChild(box);ShowReturn();}html dom树: