JavaScript DOM 操作总结
来源:互联网 发布:淘宝店9.9包邮 编辑:程序博客网 时间:2024/05/26 02:20
获取和操作dom属性和文本需要清楚的概念
- 元素节点
- 属性节点: 元素的属性, 可以直接通过属性的方式来操作.
文本节点: 是元素节点的子节点, 其内容为文本.
- 获取属性节点:
1). 可以直接通过
cityNode.id
这样的方式来获取和设置属性节点的值2). 通过元素节点的 getAttributeNode 方法来获取属性节点,然后在通过 nodeValue 来读写属性值
获取元素节点的子节点(只有元素节点才有子节点!!):
- childNodes 属性获取全部的子节点, 但该方法不实用.
- 因为如果要获取指定的节点的指定子节点的集合,
- 可以直接调用元素节点的 getElementsByTagName() 方法来获取.
- firstChild 属性获取第一个子节点
- lastChild 属性获取最后一个子节点
获取文本节点:
1). 步骤: 元素节点 –> 获取元素节点的子节点
2). 若元素节点只有文本节点一个子节点,
例如
<li id="bj" name="BeiJing">北京</li>, <p>你喜欢哪个城市?</p>
,可以先获取到指定的元素节点 eleNode,
然后利用
eleNode.firstChild.nodeValue
的方法来读写其文本节点的值
代码
<!-- 演示 1 如何获取属性节点,获取和改变属性节点的属性; 2 如何获取和改变文本节点及其文本值;--><!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> window.onload = function(){ var h2 = document.getElementById("hello"); //get the attr value method 1 console.log(h2.id); //edit attr h2.id = "hello javascript"; //get node value method 2 console.log(h2.getAttributeNode("id").nodeValue); console.log(h2.getAttributeNode("name").nodeValue); console.log(h2.getAttributeNode("class").nodeValue); console.log(h2.getAttribute("class")); console.log(h2.className); console.log(h2.classList[0] + "--" + h2.classList[1]); console.log(h2.nodeName); console.log(h2.name); //null //get the text value console.log(h2.text); //null console.log(h2.firstChild.textContent); //edit the textNode h2.firstChild.textContent = "good by the fucking dom!" } </script></head><body><h2 id="hello" class="header blue" name="learn_dom">hello dom, take it easy!</h2></body></html>
输出
演示创建节点,互换节点,插入节点,删除节点的操作
节点的属性
- 节点的属性:
- nodeName: 代表当前节点的名字. 只读属性.
- 如果给定节点是一个元素节点或属性节点,nodeName 属性将返回这个元素的名字。
- 如果给定节点是一个文本节点, nodeName 属性将返回内容为 #text 的字符串
- nodeType:返回一个整数, 这个数值代表着给定节点的类型.
- 只读属性. 1 – 元素节点, 2 – 属性节点, 3 – 文本节点
- nodeValue:返回给定节点的当前值(字符串). 可读写的属性
- 元素节点, 返回值是 null.
- 属性节点: 返回值是这个属性的值
- 文本节点: 返回值是这个文本节点的内容
代码
<!--演示创建节点,互换节点,插入节点,删除节点的操作--><!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> window.onload = function () { var ul1 = document.getElementById("hob"); alert(ul1.childElementCount); //append a childNode var liNode = document.createElement("li"); var textNode = document.createTextNode("美剧"); liNode.appendChild(textNode); ul1.appendChild(liNode); //edit build in attr liNode.id = "jack"; liNode.className = "liNode_class"; //create attr liNode.setAttribute("black","nigger"); //get the attr alert(liNode.id + '--' + liNode.className + '--' + liNode.getAttribute("black")); alert(ul1.childElementCount); //del a childNode ul1.removeChild(liNode); //replace basketball with music alert("start replace basketball with music"); var mLi = document.getElementById("music"); var bLi = document.getElementById("basketball"); var mLiCopy = mLi.cloneNode(true); alert(mLiCopy.id); ul1.replaceChild(mLiCopy,bLi); alert("replaced successfully! change the text of mLiCopy"); mLiCopy.firstChild.textContent = "fat girl"; //exchange node alert("start to exchange"); exchangeNode(mLi,mLiCopy); //insert runLiCopy before mLiCopy alert("start to insert insert runLiCopy before mLiCopy") var runLiCopy = document.getElementById("run").cloneNode(true); ul1.insertBefore(runLiCopy,mLiCopy); //remove childNode var liNodes = document.getElementsByTagName("li"); for(var i=0;i < liNodes.length; i++){ liNodes[i].onclick = function(){ var flag = confirm("did you want to remove" + this.firstChild.textContent); if(flag){ this.parentNode.removeChild(this); } } } } //function to exchangeNode function exchangeNode(aNode,bNode){ var aParent = aNode.parentNode; var bParent = bNode.parentNode; if(aParent && bParent){ var aNodeCopy = aNode.cloneNode(true); bParent.replaceChild(aNodeCopy,bNode); aParent.replaceChild(bNode,aNode); } } </script></head><body><ul id="hob"> <li id="music">音乐</li> <li>编程</li> <li id="basketball">篮球</li> <li>排球</li> <li id="run">跑步</li></ul></body></html>
概念详解
替换子元素
replaceChild(): 把一个给定父元素里的一个子节点替换为另外一个子节点 var reference = element.replaceChild(newChild,oldChild);
返回值是一个指向已被替换的那个子节点的引用指针
创建一个元素节点
createElement(): 按照给定的标签名创建一个新的元素节点. 方法只有一个参数:被创建的元素节点的名字, 是一个字符串. 方法的返回值:是一个指向新建节点的引用指针. 返回值是一个元素节点, 所以它的 nodeType 属性值等于 1. 新元素节点不会自动添加到文档里, 它只是一个存在于 JavaScript 上下文的对象.
创建一个文本节点
createTextNode(): 创建一个包含着给定文本的新文本节点. 这个方法的返回值是一个指向新建文本节点引用指针. 它是一个文本节点, 所以它的 nodeType 属性等于 3. 方法只有一个参数:新建文本节点所包含的文本字符串. 新元素节点不会自动添加到文档里
为元素节点添加子节点
appendChild(): var reference = element.appendChild(newChild): 给定子节点 newChild 将成为给定元素节点 element 的最后一个子节点. 方法的返回值是一个指向新增子节点的引用指针.
- JavaScript DOM 操作总结
- Javascript dom结点操作总结
- Javascript中Dom常用操作总结
- Javascript操作DOM常用API总结
- Javascript操作DOM常用API总结
- Javascript操作DOM常用API总结
- JavaScript 操作 DOM 常用 API 总结
- Javascript 操作 DOM 常用 API 总结
- Javascript 操作 DOM 常用 API 总结
- Javascript操作DOM常用API总结
- JavaScript DOM总结(二、节点操作)
- Javascript操作DOM常用API总结
- Javascript操作DOM常用API总结
- javaScript操作Dom总结及demo
- Javascript操作DOM常用API总结
- Javascript操作DOM常用API总结
- Javascript操作DOM常用API总结
- Javascript操作DOM常用API总结
- 137.View the Exhibits and examine PRODUCTS and SALES tables.
- opencl:cl::make_kernel的进化
- Pycharm中的中文文件名只能显示口口口口口口口口口的解决方法
- JDK常用的package
- C#读取文本文件
- JavaScript DOM 操作总结
- SecureCRT连接Ubuntu失败(远程系统拒绝访问)
- Caffe基础介绍
- 线性时间排序C++代码集合(计数排序,基数排序,桶排序([0~1)的浮点数))
- unity3d进程通信利用WM_COPYDATE和HOOK
- PHP学习SELECT postgresql正则表达式 cookie同一站点IP访问和域名访问 T检验
- UITextField
- cell里面 self 和self.contentview的区别
- Python日志模块logging的使用