中易网

在JS中使用DOM模型

答案:1  悬赏:20  
解决时间 2021-04-28 07:22

1.如何在JS里面进行用DOM模型来读取表格数据?

2.当有大量的数据修改的时候,如何进行使用?

3.对DOM模型进行一个详尽一点的解释。

4.对在JS使用DOM模型,最好能有一个简明的例子!

PS:积分不够,不好意思

最佳答案

一、使用DOM


考虑一个html文件:


<html>


<head><title>测试</title></head>


<body>


<p>测试</p>


</body>


</html>


1.访问节点:


访问html元素:var oHtml=document.documentElement;


获取head元素:var oHead=oHtml.firstChild;


获取body元素:var oBody=oHtml.lastChild; 或者 var oBody=document.body;


也可以通过childNodes来做同样的工作:


var oHead=oHtml.childNodes[0] 或者 oHtml.childNodes.item(0);


var oBody=oHtml.childNodes[1] 或者 oHtml.childNodes.item(1);


判断节点间关系:


alert(oHead.parentNode==oHtml);


alert(oBody.previousSibling==oHead);


alert(oHead.nextSibling==oBody);


alert(oHead.ownerDocument==document);


2.检测节点类型:


通过节点的nodeType属性来检验节点类型:


alert(document.nodeType); //输出9


需要注意的是,DOM兼容的浏览器(以FF2.0为例),拥有Node.DOCUMENT_NODE、Node.ELEMENT_NODE等常量。各常量名称与数值对照表如下:


ELEMENT_NODE 1


ATTRIBUTE_NODE 2


TEXT_NODE 3


CDATA_SECTION_NODE 4


ENTITY_REFERENCE_NODE 5


ENTITY_NODE 6


PROCESSING_INSTRCTION_NODE 7


COMMENT_NODE 8


DOCUMENT_NODE 9


DOCUMENT_TYPE_NODE 10


DOCUMENT_FRAGMENT_NODE 11


NOTATION_NODE 12


IE6不支持,不过你可以自定义一个JS对象Node。


3.处理特性


处理特性可以使用标准的NameNodeMap中的方法:


getNamedItem(name) removeNamedItem(name) setNamedItem(node) item(pos)


比如:<p id="test">测试</p>


假设变量oP是上面的p节点的引用,我们要访问oP的id属性:


var sId=oP.attributes.getNamedItem("id").nodeValue;


这些方法用起来很累赘,所以DOM又定义了三个方法来简化:


getAttribute(name) ——返回名称为name的属性的值


setAttribute(name,value) ——顾名思义


removeAttribute(name) ——顾名思义


上面的例子可以改写为:


var sId=oP.getAttribute("name");


4.访问指定节点:


熟知的getElementByTagName(name),getElementByName(name),getElementById(id)三个方法,不再展开。


5.创建和操作节点:


(1)创建新节点,一张IE(6.0)和FF对DOM Level1的创建新节点方法支持的对照表:


方法 IE FF


createAttribute(name) Y Y


createCDATASection(text) N Y


createComment(text) Y Y


createDocumentFragment() Y Y


createElement(tagName) Y Y


createEntityReference(name) N Y


createProcessingInstruction(


target,data) N Y


createTextNode(text) Y Y


下面介绍常用的几个方法


(2)createElement(),createTextNode(),appendChild()


例子:


<html>


<head>


<title>createElement() Example</title>


<script type="text/javascript">


function createMessage() {


var oP = document.createElement("p");


var oText = document.createTextNode("Hello World!");


oP.appendChild(oText);


document.body.appendChild(oP);


}


</script>


</head>


<body >


</body>


</html>



在页面载入后,创建节点oP,并创建一个文本节点oText,oText通过appendChild方法附加在oP节点上,为了实际显示出来,将oP节点通过appendChild方法附加在body节点上。此例子将显示Hello World!


(3)removeChild(),replaceChild()和insertBefore()


从方法名称就知道是干什么的:删除节点,替换节点,插入节点。需要注意的是replaceChild和insertBefore两个参数都是新节点在前,旧节点在后。


(4)createDocumentFragment()


此方法主要是为了解决大量添加节点时,速度过慢。通过创建一个文档碎片节点,将要添加的新节点附加在此碎片节点上,然后再将文档碎片节点append到body上面,替代多次append到body节点。


例子:


<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>


二、HTML DOM的特征功能


HTML DOM的特性和方法不是标准的DOM实现,是专门针对HTML同时也让一些DOM操作变的更加简便。


1.让特性像属性一样


访问某元素的特性需要用到getAttribute(name)方法,HTML DOM扩展,可以直接使用同样名称的属性来获取和设置这些值:


比如 <img src="test.jpg"/>


假设oImg是此元素的引用


(oImg.getAttribute("src")可以直接写成:oImg.src,设置值简化为:


oImg.src="test2.gif";


唯一特殊的class属性,因为class是ECMAScript的保留字,所以替代的属性名是className.


2.table的系列方法:


为了简化创建表格,HTML DOM提供了一系列的表格方法,常用几个:


cells ——返回</tr>元素中的所有单元格


rows ——表格中所有行的集合


insertRow(position) ——在rows集合中指定位置插入新行


deleteRow(position) ——与insertRow相反


insertCell(position) ——在cells集合的指定位置插入一个新的单元格


deleteCell(position) ——与insertCell相反

我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请教拉丁舞老师,伦巴向前走步技巧,我刚刚学
打字在什么速度下才算合格
因拆迁被注销了户口当做“死人”处理怎么办?
原野人家在什么地方啊,我要过去处理事情
实况足球8国际版补丁
哪个网站可以把歌曲和歌词(手机MP3)一起下载
我的电脑IE浏览器的工具栏的INTER选项打不开
一个月的狗突然断奶会死吗?怎么喂
淘宝不能发布二手宝贝了,有什么办法能出售
污水处理厂运行工
成都火车站到双流机场要坐几路公交,多久能到
在系统只输入父母的身份证号,可否查到其下有
N91会很厚吗,手机端口是多少
新华杂货店在哪里啊,我有事要去这个地方
什么时候墙会流汗
推荐资讯
初学拉丁舞,跳好伦巴的要点在哪里?
爱情公寓18集后段曾老师和展博演出的那个背景
谁有治白头发的方子呀,我这个已经有八年了,
谁能教我下怎么刷SD敢达的幽灵模式
我的Half-Life2本来是中文我重装了电脑 变成
DNF开七十级以后会出更高级的时装么?会出时装
妈咪宝贝童装店我想知道这个在什么地方
双系统其中一个崩溃了怎么办?
怀柔哪家店修车好还快
dnf怎样充值?
宝马M5好不好,中国有的卖吗
NTSC制和PAL制的色副载波频率是怎样选择的?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?