博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript Dom操作
阅读量:6104 次
发布时间:2019-06-21

本文共 2830 字,大约阅读时间需要 9 分钟。

 供自己或初学者学习

简单的表格: 

 

经测试: 

var td= document.getElementById("TEST"); alert(td.childNodes.length);结果为4

 

百思不得其解,阅读相关资料后,发现原来JS中,空格也是作为一个文本节点,而两个input元素后面都有空格 

所以都作为一个文本节点,所以结果为4 
删除空格后结果为2 
为了处理里面的空格节点,用以下函数来处理 

function cleanWhitespace(element) { for(var i=0; i

处理结点cleanWhitespace(document.getElementById("TEST"))后,OK,解决 

另附: 

DOM基本方法 
一.直接引用结点 
1.document.getElementById(id); 
--在文档里面通过id来找结点 
2.document.getElementByTagName(tagName); 
--返回一个数组,包含对这些结点的引用 
--如:document.getElementByTagName("span");将返回所有类型为span的结点 
二.间接引用结点 
3.element.childNodes 
--返回element的所有子结点,可以用element.childNodes[i]的方式来调用 
--element.firstChild=element.childNodes[0]; 
--element.lastChild=element.childNodes[element.childNonts.length-1]; 
4.element.parentNode 
--引用父结点 
5.element.nextSibling; //引用下一个兄弟结点 
element.previousSibling; //引用上一个兄弟结点 
三.获得结点信息 
6.nodeName属性获得结点名称 
--对于元素结点返回的是标记名称,如:<a herf><a>返回的是"a" 
--对于属性结点返回的是属性名称,如:class="test" 返回的是test 
--对于文本结点返回的是文本的内容 
7.nodeType返回结点的类型 
--元素结点返回1 
--属性结点返回2 
--文本结点返回3 
8.nodeValue返回结点的值 
--元素结点返回null 
--属性结点返回undefined 
--文本结点返回文本内容 
9.hasChildNodes()判断是否有子结点 
10.tagName属性返回元素的标记名称 
--这个属性只有元素结点才有,等同于元素结点的nodeName属性 
四.处理属性结点 
11.每个属性结点都是元素结点的一个属性,可以通过(元素结点.属性名称)访问 
12.利用setAttribute()方法给元素结点添加属性 
--elementNode.setAttribute(attributeName,attributeValue); 
--attributeName为属性的名称,attributeValue为属性的值 
13.使用getAttribute()方法获得属性值 
--elementNode.getAttribute(attributeName); 
五.处理文本结点 
14.innerHTML和innerText属性,这两个方法相信大家都很熟悉,不介绍了,值得注意的是无论是ie还是firefox都容易把空格、换行、制表符等当成文本结点。所有一般通过element.childNodes[i]引用文本结点的时候,一般要处理: 

 

六.改变文档的层次结构 

15.document.createElement()方法创建元素结点 
--如:document.createElement("Span"); 
16.document.createTextNode()方法创建文本结点 
--如:document.createTextNode(" "); //注:他不会通过html编码,也就是说这里创建的不是空格,而是字符串  
17.使用appendChild()方法添加结点 
--parentElement.appendChild(childElement); 
18.使用insertBefore()方法插入子节点 
--parentNode.insertBefore(newNode,referenceNode); 
--newNode为插入的节点,referenceNode为将插入的节点插入到这之前 
19.使用replaceChild方法取代子结点 
--parentNode.replaceChild(newNode,oldNode); 
--注:oldNode必须是parentNode的子结点, 
20.使用cloneNode方法复制结点 
--node.cloneNode(includeChildren); 
--includeChildren为bool,表示是否复制其子结点 
21.使用removeChild方法删除子结点 
--parentNode.removeChild(childNode); 
七.表格的操作 
--注:ie中无法直接将一个完整的表格结点插入到文档中 
22.添加行和单元格 
var _table=document.createElement("table"); //创建表 
table.insertRow(i); //在table的第i行插入行 
row.insertCell(i); //在row的第i个位置插入单元格 
23.引用单元格对象 
--table.rows[i].cells[i]; 
24.删除行和单元格 
--table.deleteRow(index); 
--row.deleteCell(index); 
25.交换两行获得两个单元格的位置 
node1.swapNode(node2); 
--这个方法在firefox中将出错 
通用方法: 

function swapNode(node1,node2) { var _parent=node1.parentNode; var _t1=node1.nextSubling; var _t2=node2.nextSubling; if(_t1)parent.insertBefore(node2,_t1); else _parent.appendChild(node2); if(_t2)parent.insertBefore(node1,_t2); else _parent.appendChild(node1);

 

转载于:https://www.cnblogs.com/guaiyouyisi/p/8041639.html

你可能感兴趣的文章
【FJOI2015】金币换位问题
查看>>
数学之美系列二十 -- 自然语言处理的教父 马库斯
查看>>
Android实现自定义位置无标题Dialog
查看>>
面试总结
查看>>
Chrome浏览器播放HTML5音频没声音的解决方案
查看>>
easyui datagrid 行编辑功能
查看>>
类,对象与实例变量
查看>>
HDU 2818 (矢量并查集)
查看>>
【转】php字符串加密解密
查看>>
22. linux 常用命令
查看>>
ASP.Net 使用GridView模板删除一行的用法
查看>>
(十六)字段表集合
查看>>
JPGraph
查看>>
实验二 Java面向对象程序设计
查看>>
------__________________________9余数定理-__________ 1163______________
查看>>
webapp返回上一页 处理
查看>>
新安装的WAMP中phpmyadmin的密码问题
查看>>
20172303 2017-2018-2 《程序设计与数据结构》第5周学习总结
查看>>
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>