javascript DOM 操作基础知识小结(3)


<html>
<head>
<title>removeChild() Example</title>
<script type="text/javascript">
function removeMessage() {
var oP = document.body.getElementsByTagName("p")[0];
oP.parentNode.removeChild(oP);
}
</script>
</head>
<body>
<p>Hello World!</p>
</body>
</html>


替换
<html>
    <head>
        <title>replaceChild() Example</title>
        <script type="text/javascript">
            function replaceMessage() {
                var oNewP = document.createElement("p");
                var oText = document.createTextNode("Hello Universe!");
                oNewP.appendChild(oText);
                var oOldP = document.body.getElementsByTagName("p")[0];
                oOldP.parentNode.replaceChild(oNewP, oOldP);
            }
        </script>
    </head>
    <body>
        <p>Hello World!</p>
    </body>
</html
新消息添加到旧消息之前
<html>
    <head>
        <title>insertBefore() Example</title>
        <script type="text/javascript">
            function insertMessage() {
                var oNewP = document.createElement("p");
                var oText = document.createTextNode("Hello Universe!");
                oNewP.appendChild(oText);
                var oOldP = document.getElementsByTagName("p")[0];
                document.body.insertBefore(oNewP, oOldP);
            }
        </script>
    </head>
    <body>
        <p>Hello World!</p>
    </body>
</html>

createDocumentFragment()
一旦把节点添加到document.body(或 者它的后代节点)中,页面就会更新并反映出这个变化。对于少量的更新,这是很好的,然而,当要向document添加大量数据时,如果逐个添加这些变动, 这个过程有可能会十分缓慢。为解决这个问题,可以创建一个文档碎片,把所有的新节点附加其上,然后把文档碎片的内容一次性添加到document中,假如 想创建十个新段落

复制代码 代码如下:


<html>
<head>
<title>insertBefore() Example</title>
<script type="text/javascript">
function addMessages() {
var arrText = ["first", "second", "third", "fourth", "fifth", "sixth", "seventh", "eighth", "ninth", "tenth"];
var oFragment = document.createDocumentFragment();
for (var i=0; i < arrText.length; i++) {
var oP = document.createElement("p");
var oText = document.createTextNode(arrText[i]);
oP.appendChild(oText);
oFragment.appendChild(oP);
}
document.body.appendChild(oFragment);
}
</script>
</head>
<body>
</body>
</html>


6.让特性像属性一样
大部分情况下,HTML DOM元素中包含的所有特性都是可作为属性。
假设有如下图像元素:
<img src = "mypicture.jpg" border=0 />
如果要使用核心的DOM来获取和设置src和border特性,那么要用getAttribute()和setAttribute()方法:
alert(oImg.getAttribute("src"));
alert(oImg.getAttribute("border"));
oImg.setAttribute("src","mypicture2.jpg");
oImg.setAttribute("border",1);
然而,使用HTML DOM,可以使用同样名称的属性来获取和设置这些值:
alert(oImg.src);
alert(oImg.border);
oImg.src="mypicture2.jpg";
oImg.border ="1";
唯一的特性名和属性名不一样的特例是class属性,它是用来指定应用于某个元素的一个CSS类,因为class在ECMAScript中是一个保留字,在javascript中,它不能被作为变量名、属性名或都函数名。于是,相应的属性名就变成了className;
注:IE在setAttribute()上有很大的问题,最好尽可能使用属性。

7.table方法
为了协助建立表格,HTML DOM给<table/>,<tbody/>和<tr/>等元素添加了一些特性和方法。
给<table/>元素添加了以下内容:
特性/方法   说明  
caption   指向<caption/>元素并将其放入表格  
tBodies   <tbody/>元素的集合  
tFoot   指向<tfoot/>元素(如果存在)  
tHead   指向<thead/>元素(如果存在)  
rows   表格中所有行的集合  
createTHead()   创建<thead/>元素并将其放入表格  
createTFood()   创建<tfoot/>元素并将其放入表格  
createCpation()   创建<caption/>元素并将其放入表格  
deleteTHead()   删除<thead/>元素  
deleteTFood()   删除<tfoot/>元素  
deleteCaption()   删除<caption/>元素  
deleteRow(position)   删除指定位置上的行  
insertRow(position)   在rows集合中的指定位置上插入一个新行  

<tbody/>元素添加了以下内容
特性/方法   说明  
rows   <tbody/>中所有行的集合  
deleteRow(position)   删除指定位置上的行  
insertRow(position)   在rows集合中的指定位置上插入一个新行  

<tr/>元素添加了以下内容
特性/方法   说明  
cells   <tr/>元素中所有的单元格的集合  
deleteCell(postion)   删除给定位置上的单元格  
insertCell(postion)   在cells集合的给点位置上插入一个新的单元格  

8.遍历DOM
NodeIterator,TreeWalker
DOM Level2的功能,这些功能只有在Mozilla和Konqueror/Safari中才有,这里就不介绍了
下面是一些关于DOM操作相关的一些文章
javascript DOM操作之动态删除TABLE多行
JavaScript DOM 添加事件

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdsyzg.html