关于JavaScript-DOM编程的一些基础知识要点
DOM(Document Object Model) 文档对象模型
DOM编程通过标签属性获取节点的方法
- document.getElementById(“HTML标签元素的ID”);
- document.getElementsByTagName(“HTML标签元素名”); (返回值是数组)
- document.getElementsByName(“HTML标签元素的name”); (返回值是数组)
DOM编程通过关系获取标签节点的方法
nodeType 获取当前节点的类型
- 文本节点类型是:3
- 注释节点类型是:8
- 标签节点类型是:1
parentNode 获取当前元素的父节点
123var bodyNode = document.getElementsByTagName("body")[0];var parentNode = bodyNode.parentNode;(获取得该元素的父节点对象)var parentNodeName = parentNode.nodeName;(获取到该父节点名称)childNodes 获取当前元素的所有下一级子元素
123456789var bodyNode = document.getElementsByTagName("body")[0];var childNodes = bodyNode.childNodes;(获取得该元素的下一级子元素对象的数组)var childNodesName = parentNode[0].nodeName;(获取到该子节点0指针的名称)//如果有Script标签并且不在body标签体内的情况,浏览器会自动修正把script标签放进body中。且句尾后具有空文本,也算一个节点。注释也算一个节点。如果需要纯标签节点可以使用nodeType来判断类型进行for循环筛选for(var i = 0 ; i < childNodes.length ; i++){if(childNodes[i].nodeType == 1){alert(childNodes[i].nodeName);}}firstChild 获取当前节点的第一个子节点
123var bodyNode = document.getElementsByTagName("body")[0];var firstChild = bodyNode.firstChild;(获取当前节点的第一个子节点对象)var firstChildName = firstChild.nodeName;(获取到第一个子节点名称)lastChild 获取当前节点的最后一个子节点
123var bodyNode = document.getElementsByTagName("body")[0];var lastChild = bodyNode.lastChild;(获取当前节点的最后一个子节点对象)var lastChildName = lastChild.nodeName;(获取到最后一个子节点名称)
previousSibling 获取当前节点的上一个节点(兄节点)
nextSibling 获取当前节点的下一个节点(弟节点)
DOM编程 创建节点,插入节点
document.createElement(“标签名”); 创建标签对象
1234var tableNode = document.getElementsByTagName("table")[0];var trNode = document.createElement("tr");var tdNode1 = document.createElement("td");var tdNode2 = document.createElement("td");Object.setAttribute(“属性名”,”属性值”); 设置标签属性
1trNode.setAttribute("id","trNode");Object.innerHTML=””;
12tdNode1.innerHTML = "<input type='file'/>";tdNode2.innerHTML = "<a href="#">delete</a>;Object.appendChild(e); 添加元素对象到Object中子元素最后的位置
12trNode.appendChild(tdNode1);trNode.appendChild(tdNode2);Object.insertBefore(newE,e); 添加元素对象到Object中指定子元素对象前一个位置
1tableNode.insertBefore(trNode,e);Object.removeChild(e); 删除指定的子节点
1tableNode.removeChild(e);添加创建的标签到文档内
123tableNode.appendChild(trNode);var bodyNode = document.getElementsByTagName("body");bodyNode.appendChild(tableNode);
####例子
|
|
利用DOM编程制作联动框
|
|
注意事项:当选择了一元数组的时候(广东),不会出现问题,正常循环添加option标签到城市的select标签中。而当再次选择一元数组的时候会导致原先option的数据留存,而重复显示了广东相关的城市,所以需要在添加一个方法来清空城市select标签。而在清空过程,每removeChild一个元素,则下标会往前移,从而导致用for循环删除的时候没清空干净。此时可以去掉for循环的i++,使该循环只删除0下标,直到没有内容,或者使用whlie循环判断该数组是否为空,不为空则就执行一次remoceChild。或者还有一个更为简便的方法,使用option标签方法中获取到options数组,再对该数组赋值长度为0,从而清空。
时间联动框例子
|
|