这两天再学佟刚的JavaScriptDOM节点操作,先把其笔记记录于此,加深自己对该知识的印象,也便于后期的查看。

1.节点及其类型: 1)元素节点 2)属性节点:元素的属性,可以直接通过属性的方式来操作 3)文本节点:是元素节点的子节点,其内容是文本

2.一般地,不能在body节点之前来直接获取body内的节点,因为此时html文档树没有完全加载,所以获取不到指定的节点,需要使用window.onload事件来操作

获取节点****

	1.获取元素节点:
	  document.getElementById :根据id属性来获取对应的单个节点
		
		document.getElementsByTagName:根据标签名获取指定的节点名字的数组,length是其数组的长度
		
		document.getElementsByName:根据节点的name属性来获取符合条件的节点数组  (ie不支持)
		
		
		2.获取属性节点:
		
		    可以直接通过cityCode.id这样的方式来获取和设置属性节点的值;通过元素节点的getAttributeNode方法来获取属性节点,然后通过nodeValue来读写属性值
				
	  3.获取元素节点的子节点(**只有元素节点存在子节点):
				 .firstChild 属性获取第一个子节点
				 .lastChild 属性获取最后一个子节点
				 
		4.获取文本节点:
					先获取元素节点的子节点,如果元素节点的子节点只有一个子节点,可以先获取到指定的元素节点,然后利用.firstChild.nodeValue的方法来读写其文本节点的值
		
		5.节点的属性:
		    nodeName :代表当前节点的名字,只读属性
				                   **如果给定的节点是文本节点,那么,nodeName属性将返回内容为#text的字符串
				nodeType:给定节点的类型
				     1--元素节点 ;2--属性节点  ;3--文本节点
				 nodeValue:返回给定节点的当前值(字符串)
				        1--元素节点返回null ;2--属性节点返回这个属性的值 ;3 --文本节点返回这个文本节点的内容
		
		
		6.创建元素节点:
		   createElement():按照指定的标签名来创建一个新的元素节点,方法只有一个参数:就是被创建的元素节点的名字,是一个字符串;方法的返回值是一个指向新建节点的引用指针,返回值是一个元素节点,所以其nodeType=1
			 
		7.创建一个文本节点:
		    createTextNode()创建一个包含着指定文本的新文本节点,这个方法的返回值是一个指向新建文本节点的引用指针(当前被创建的文本节点),他是一个文本节点,所以其nodeType=3,方法只有一个参数,就是当前被创建的文本节点中所包含的文本字符串。
				
				8.为元素节点添加一个子节点:appendChild(),就是当前该元素节点的最后一个子节点,返回返回值是一个指向新增子节点的引用指针

9.节点的替换: replaceChild():把一个给定的父元素中一个子节点替换为另一个子节点,返回值是新替换后的那个子节点的引用指针;除了替换还有移动功能, ******互换功能:(自定义方法) / * 互换 aNode 和 bNode * @param {Object} aNode * @param {Object} bNode */ function replaceEach(aNode, bNode){

						if(aNode == bNode){
							return;
						}

						var aParentNode = aNode.parentNode;
						//若 aNode 有父节点
						if(aParentNode){
							var bParentNode = bNode.parentNode;

							//若 bNode 有父节点	
							if(bParentNode){
								var tempNode = aNode.cloneNode(true);
								bParentNode.replaceChild(tempNode, bNode);
								aParentNode.replaceChild(bNode, aNode);	
							}
						}

					}   

10.插入节点:

	insertBefore():把一个给定节点插入到一个给定元素节点的给定子节点的前面

						/**
							自定义insertAfter()方法
						**/
													 /**
						 * 将 newChild 插入到 refChild 的后边
						 * @param {Object} newChild
						 * @param {Object} refChild
						 */
						function insertAfter(newChild, refChild){
							var refParentNode = refChild.parentNode;

							//判断 refChild 是否存在父节点
							if(refParentNode){
								//判断 refChild 节点是否为其父节点的最后一个子节点
								if(refChild == refParentNode.lastChild){
									refParentNode.appendChild(newChild);
								}else{
									refParentNode.insertBefore(newChild, refChild.nextSibling);
								}	
							}
						}

11.删除节点:

removeChild() :从一个给定的元素中删除一个子节点 其返回值是一个指向已经被删除的子节点的引用指针;如果某个节点被删除后,其下面的所有子节点将全部同时被删除

12.innerHTML属性:表示元素的html的内容

-----------后续会继续补充----- 有错误的地方希望各位大神斧正!!!!谢谢各位。