首页 > 开发 > 综合 > 正文

文档对象模型(DOM)的基本方法

2020-09-19 11:15:17
字体:
来源:转载
供稿:网友
一.直接引用结点
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]引用文本结点的时候,一般要处理:
<script language"javascript" type="text/javascript">
function cleanwhitespace(element)
{
for(var i=0; i<element.childnotes.length; i++)
{
var node = element.childnodes[i];
if(node.nodetype == 3 && !//s/.test(node.nodevalue))
{
node.parentnode.removechild(node);
}
}
}
</script>

六.改变文档的层次结构
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);
}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表