js笔记:动态创建HTML内容
继续学习JS中,动态创建HTML,点击菜单时,动态创建子菜单,在点击的对象后创建子菜单节点dl,并在该节点中创建子节点dd,并将数组中的元素创建到dd中.
html部分
- <body>
- <ul>
- <li><p>The First</p></li>
- <li><p>The Seconde</p></li>
- <li><p>The Third</p></li>
- </ul>
- <div id="test"></div>
- <div id="test1"></div>
- </body>
css部分
- *{margin:0;padding:0;}
- body{font:12px Arial;}
- ul{list-style:none;}
- li{float:left;width:100px;text-align:center;}
- li p {cursor:pointer;}
javascript部分
- <script type="text/javascript">
- function insertAfter(newElement,targetElement){
- var parent = targetElement.parentNode;
- if(parent.lastChild == targetElement){
- parent.appendChild(newElement);
- }else{
- parent.insertBefore(newElement,targetElement.nextSibling);
- }
- }
- function create(){
- var tagList = document.getElementsByTagName("li");
- var menuList = new Array("First","Seconde","Third");
- for(var i = 0;i < tagList.length;i++){
- tagList[i].getElementsByTagName("p")[0].onclick = function(event){
- if(!event){
- event = window.event;
- }
- var el = event.target || event.srcElement;
- var newTag = document.createElement("dl");
- if(el.getAttribute("class") != "open"){
- insertAfter(newTag,el);
- for(var k = 0;k < menuList.length;k++){
- var newTagDd = document.createElement("dd");
- newTag.appendChild(newTagDd);
- var menuText = menuList[k];
- var newText = document.createTextNode(menuText);
- newTagDd.appendChild(newText);
- }
- el.setAttribute("class","open");
- }else{
- el.parentNode.removeChild(el.nextSibling);
- el.removeAttribute("class");
- }
- }
- }
- }
- window.onload = function(){
- create();
- }
- </script>
XiaoBai:
很好很实用的功能,收藏先~~~