createElement, parentNode, removeChild, appendChild

1获取父节点

var childNode = document.getElementById("child");
var parentNode = childNode.parentNode; // 获取父节点

利用dom获取元素要嵌套
引出:利用父子兄节点关系获取元素

  • 标签,元素,元素节点
  • 空格,文本节点
  • 属性节点

dom树中所有节点都能通过js访问
节点至少有nodetype,nodename,nodevalue

元素节点 nodetype=1
属性节点 nodetype=2
文本节点 nodetype=3(文字,空格,换行)
节点操作主要操作的是元素节点

如果只想获得里面元素节点:

for(var i=0;i

2 parentNode.children获取所有子元素节点

3 .children[0],.children[ol.children.length-1](ol是变量,具体见楼下代码)


  
  1. li1
  2. li2
  3. li3
  4. li4

新浪下拉菜单

html结构:一个大ul里包括四个li,每个li里上下栏,上栏是a标签,下栏是ul包含三个li


css:

js的思路:

1 导航栏里li都要鼠标经过效果,循环注册鼠标事件
2 鼠标里第二个孩子ul显示,鼠标离开第二个孩子ul消失

获得兄弟节点(用的较少)

nextSibling获得下一个兄弟节点,包括元素节点,文本节点
previousSibling前一个兄弟节点,包括元素节点,文本节点
nextElementSibling 得到下一个兄弟元素节点

通过封装兼容性函数:
function getNextElementSibling(element) {
	var el = element;
	while(el = el.nextSibling) {
	 if(el.nodeType===1) {
	 return el;
	 }
	}
	return null;
}

原本ul里没有li,根据情况动态创建li放ul里
1 创建节点元素节点
var li = document.createELement('li')
2 添加节点node父级 child 子级
var ul = document.queryselector('ul')
ul.appendchild(li);//(后面新增加元素)
3 如果原来就有li元素,那么新建的元素跟在原来的后面
4 node.insertBefore(child,指定元素)
//将一个节点添加到父节点指定子节点前面
var lili = document.createelement('li');
ul.insertbefore(lili,ul.children[0]);
//在第一个元素前面插入元素

发布留言案例:


  
  

node.removechild(child)删除子节点:

var ul = document.querySelector('ul');
var btn = document.querySelector('button');

btn.onclick=function() {
 if(ul.children.length==0)
btn.disable=true;

else
ul.removeChild(ul.children[0]);
}

留言框删除留言:

当我们把文本区域内的值赋值给li的时候,多加一个删除的链接
需要把所有链接取过来,点击当前链接时候,删除当前链接的li

1 加入删除按钮

 li.innerHTML = text.value + "shanchu";

注意这里不是#:阻止链接跳转:添加javascript:void(0)/javascript:;

2 注意removechild只能删除他的孩子(删除a的上级li):

重点: 

ul.removeChild(this.parentNode);

复制节点

var li = ul.children[0].cloneNode(true);
//这里括号为空或者为false表示浅拷贝,里面为true表示深拷贝
//只有深拷贝又拷贝元素又拷贝内容

动态生成表格:





  
  
  Document
  



  
姓名 科目 成绩 操作

createElement, parentNode, removeChild, appendChild_第1张图片

document.write('
123
') 如果页面文档流加载完毕,再调用这句话会导致页面重绘,比如增加事件如onclick window.onload = function() { 整个页面加载完毕再调用js } 第一种创建方式可以通过for循环达到添加多次多个元素的效果 for(var i=0;i<=100;i++) inner.innerhtml += 'shanchu'

第一种方式转化成数组效率最高

var arr=[];
for(var i=0;i<100;i++)
{
 arr.push('');
inner.innerHTML=arr.join('');//转化为数组
}

你可能感兴趣的:(前端,javascript,html)