Document 对象的常用方法


Posted in Javascript onJuly 31, 2009

1、getElementById(id)
通过元素的ID访问元素,这是DOM一个基础的访问页面元素的方法,我们要经常用到它.
例如下面的例子,我们可以同DIV的ID迅速的访问到它,而不必通过DOM层层遍历,

<body> 
<div id='divid'><p>h</p> 
Just for testing; 
</div> 
<div id='divid'> 
Just for testing; 
</div> 
<script> 
var div=document.getElementById(‘divid'); 
alert(div.nodeName); 
</script> 
</body>

注意使用这个函数时如果元素的ID不是唯一的,那么会获得第一个符合条件的元素。
在IE6中如果input、checkbox,radio. 等元素name匹配指定的ID,也会被访问到
例如下面的例子中,获得的元素是input:
<body> 
<input name='divid' type="text"/> 
<div id='divid'> 
Just for testing; 
</div> 
<script> 
var div=document.getElementById('divid'); 
alert(div.nodeName); 
</script> 
</body>

2、getElementsByName(name)
返回名字是name的元素数组,在IE6中元素ID匹配这个名字的话,这个元素也将包括在内,而且getElementsByName()仅用于象input,radio,checkbox等元素对象。
象下面例子中georges数组的长度应该是0。
<body> 
<div name="george">f</div> 
<div name="george">f</div> 
<script type="text/javascript"> 
var georges=document.getElementsByName("george"); 
alert(georges.length); 
</script> 
</body>

3、getElementsByTagName(tagname)
getElementByTagName可以用于DOCUMENT也可以用元素。getElementsByTagName返回具有指定tagname的子元素列表(数组)。你可以遍历这个数组获得每一个单独的子元素。当处理很大的DOM结构,使用这种方法可以很容易的所有缩小范围。
<html> 
<head> 
<title></title> 
<script> 
function start() { 
// 获得所有tagName是body的元素(当然每个页面只有一个) 
myDocumentElements=document.getElementsByTagName("body"); 
myBody=myDocumentElements.item(0); 
// 获得body子元素种的所有P元素 
myBodyElements=myBody.getElementsByTagName("p"); 
// 获得第二个P元素 
myP=myBodyElements.item(1); 
//显示这个元素的文本 
alert(myP.firstChild.nodeValue); 
} 
</script> 
</head> 
<body onload="start()"> 
<p>hi</p> 
<p>hello</p> 
</body> 
</html>

DOM Element 常用方法
1、appendChild(node)
向当前节点对象的追加节点。经常用于给页面动态的添加内容。
例如下面给div添加一个文本节点:
<div id="test"></div> 
<script type="text/javascript"> 
var newdiv=document.createElement("div") 
var newtext=document.createTextNode("A new div") 
newdiv.appendChild(newtext) 
document.getElementById("test").appendChild(newdiv) 
</script>

上面的例子中给DIV添加文本,也可以用newdiv.innerHTML=”A new div”实现,
不过innerHTML不属于DOM
2、removeChild(childreference)
移除当前节点的子节点,返回被移除的节点。这个被移除的节点可以被插入document树中别的地方
<div id="father"><div id="child">A child</div></div> 
<script type="text/javascript"> 
var childnode=document.getElementById("child") 
var removednode=document.getElementById("father").removeChild(childnode) 
</script>

3、cloneNode(deepBoolean)
复制并返回当前节点的复制节点,这个复制得到的节点是一个孤立的节点,不在document树中。复制原来节点的属性值,包括ID属性,所以在把这个新节点加到document之前,一定要修改ID属性,以便使它保持唯一。当然如果ID的唯一性不重要可以不做处理。
这个方法支持一个布尔参数,当deepBoolean设置true时,复制 当前节点的所有子节点,包括该节点内的文本。
<p id=”mypara”>11111</p> 
p=document.getElementById("mypara") 
pclone = p.cloneNode(true); 
p.parentNode.appendChild(pclone);

4、replaceChild(newChild, oldChild)
把当前节点的一个子节点换成另一个节点
例如:
<div id="adiv"><span id="innerspan">span</span></div> 
<script type="text/javascript"> 
var oldel=document.getElementById("innerspan"); 
var newel=document.createElement("p"); 
var text=document.createTextNode(“ppppp”); 
newel.appendChild(text); 
document.getElementById("adiv").replaceChild(newel, oldel); 
</script>

5、insertBefore(newElement, targetElement)
给当前节点插入一个新节点,如果targetElement被设置为null,那新节点被当作最后一个子节点插入,否则那新节点应该被插入targetElement之前的最近位置。
<body> 
<span id="lovespan">熊掌我所欲也!</span> 
</body> 
<script type="text/javascript"> 
var lovespan=document.getElementById("lovespan") 
var newspan=document.createElement("span") 
var newspanref=document.body.insertBefore(newspan, lovespan) 
newspanref.innerHTML="鱼与"; 
</script>

6、click()
执行元素的一次点击,可以用于通过脚本来触发onClick函数
<script> 
function wow() { 
alert("我好象没有点鼠标啊"); 
} 
</script> 
<div id="test" onclick='wow()'>hhh</div> 
<script type="text/javascript"> 
var div = document.getElementById("test"); 
div.click(); 
</script>

DOM Element的属性:(下面是常用的。IE5.0以上,mozllia都支持的)
1、childeNodes 返回所有子节点对象,
例如
<table id="mylist"> 
<tr><td>一个和尚有水喝。</td></tr> 
<tr><td>两个和尚挑水喝。</td></tr> 
<tr><td>三个和尚没水喝。</td></tr> 
</table> 
<script> 
var msg=”” 
var mylist=document.getElementById("mylist") 
for (i=0; i<mylist.childNodes.length; i++){ 
var tr=mylist.childNodes[i]; 
for(j=0;j<tr.childNodes[j].length; j++) { 
var td=tr.childNodes[j]; 
msg+=td.innerText; 
} 
} 
alert(msg); 
</script>

2、innerHTML
这是一个事实上的标准,不属于w3c DOM,但是几乎所有支持DOM的浏览器,都支持这个属性。通过这个属性我们很容易修改一个元素的HTML。
<p><b>新人类,什么?!</b></p> 
<script type="text/javascript"> 
window.onload=function(){ 
document.getElementsByTagName("p")[0].innerHTML="<b>新新人类,什么?!</b>" 
} 
</script>

3、style
返回一个元素的style对象的引用,通过它我们可以获得并修改每个单独的样式。
例如下面的脚本可以修改一个元素的背景色
document.getElementById("test").style.backgroundColor="yellow"
4、firstChild 返回第一个子节点
5、lastChild 返回最后一个子节点
6、parentNode 返回父节点的对象。
7、nextSibling 返回下一个兄弟节点的对象
8、previousSibling 返回前一个兄弟节点的对象
9、nodeName 返回节点的HTML标记名称,使用英文的大写字母,如P, FONT
例如
<div id='test'>ddd</div> 
<script> 
if (document.getElementById("test").nodeName=="DIV") 
alert("This is a DIV"); 
</script>

第一个例子:
使用DOM1.0 的javascript动态地创建一个HTML table。
<head> 
<title>Sample code </title> 
<script> 
function start() { 
//获得body的引用 
var mybody=document.getElementsByTagName("body").item(0); 
//创建一个<table></table>元素 
mytable = document.createElement("TABLE"); 
//创建一个<TBODY></TBODY>元素 
mytablebody = document.createElement("TBODY"); 
// 创建行列 
for(j=0;j<3;j++) { 
//创建一个<TR></TR>元素 
mycurrent_row=document.createElement("TR"); 
for(i=0;i<3;i++) { 
//创建一个<TD></TD>元素 
mycurrent_cell=document.createElement("TD"); 
//创建一个文本元素 
currenttext=document.createTextNode("cell is row "+j+", column "+i); 
//把新的文本元素添加到单元TD上 
mycurrent_cell.appendChild(currenttext); 
// appends the cell TD into the row TR 
//把单元TD添加到行TR上 
mycurrent_row.appendChild(mycurrent_cell); 
} 
//把行TR添加到TBODY上 
mytablebody.appendChild(mycurrent_row); 
} 
// 把 TBODY 添加到 TABLE 
mytable.appendChild(mytablebody); 
// 把 TABLE 添加到 BODY 
mybody.appendChild(mytable); 
// 把mytable的border 属性设置为2 
mytable.setAttribute("border","2"); 
} 
</script> 
</head> 
<body onload="start()"> 
</body> 
</html>

首先,我们创建一个table元素
接着,创建一个TBODY元素,它应该是TABLE元素的子元素,
但是现在现在它们之间没有联系。
接着,使用一个循环创建TR元素,它们应该是TBODY元素的子元素。
对于每一个TR,我们使用一个循环创建TD元素,它们是TR的子元素。
对于每一个TD,我们创建一个文本节点元素
现在,我们创建好了这些TABLE, TBODY, TR, TD还有文本元素,但是它们之间的层级
关系并没有建立起来。然后我们以上相反的顺序把每一个对象添加到它的父节点上。
mycurrent_cell.appendChild(currenttext);
mycurrent_row.appendChild(mycurrent_cell);
mytablebody.appendChild(mycurrent_row);
mytable.appendChild(mytablebody);
现在DOM层次如下:
BODY

TABLE

TBODY

TR-------------------TR------------------TR

TD-----TD-----TD TD-----TD-----TD TD-----TD-----TD

Javascript 相关文章推荐
JQuery 动画卷页 返回顶部 动画特效(兼容Chrome)
Feb 15 Javascript
表头固定(利用jquery实现原理介绍)
Nov 08 Javascript
原生Js页面滚动延迟加载图片实现原理及过程
Jun 24 Javascript
JAVA四种基本排序方法实例总结
Jul 24 Javascript
JS+CSS实现美化的下拉列表框效果
Aug 11 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
Aug 31 Javascript
学习JavaScript设计模式(链式调用)
Nov 26 Javascript
js获取鼠标位置实例详解
Dec 09 Javascript
微信小程序之选项卡的实现方法
Sep 29 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 Javascript
Vue $mount实战之实现消息弹窗组件
Apr 22 Javascript
JavaScript实现的开关灯泡点击切换特效示例
Jul 08 Javascript
javascript getElementsByName()的用法说明
Jul 31 #Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 #Javascript
JavaScript 学习小结(适合新手参考)
Jul 30 #Javascript
JavaScript 创建对象和构造类实现代码
Jul 30 #Javascript
Javascript 学习笔记 错误处理
Jul 30 #Javascript
JS 学习笔记 防止发生命名冲突
Jul 30 #Javascript
javascript 处理HTML元素必须避免使用的一种方法
Jul 30 #Javascript
You might like
PHP获取栏目的所有子级和孙级栏目的ID号示例
2014/04/01 PHP
PHP多线程类及用法实例
2014/12/03 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
PHP最常用的正则表达式
2017/02/13 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
ThinkPHP5.1框架页面跳转及修改跳转页面模版示例
2019/05/06 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
jquery.validate使用攻略 第一部
2010/07/01 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
2011/01/31 Javascript
Javascript 鼠标移动上去小三角形滑块缓慢跟随效果
2013/04/26 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
基于WebUploader的文件上传js插件
2016/08/19 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
Bootstrap按钮组简单实现代码
2017/03/06 Javascript
仿京东快报向上滚动的实例
2017/12/13 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
[01:16:16]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第二场 1月8日
2021/03/11 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
详解如何用python实现一个简单下载器的服务端和客户端
2019/10/28 Python
python爬虫要用到的库总结
2020/07/28 Python
Python实现定时监测网站运行状态的示例代码
2020/09/30 Python
介绍一下RMI的基本概念
2016/12/17 面试题
法律专业学生的自我评价
2014/02/07 职场文书
运动会稿件100字
2014/02/21 职场文书
产品质量承诺书范文
2014/03/27 职场文书
小学教师读书活动总结
2014/07/08 职场文书
商业计划书格式、范文
2019/03/21 职场文书
MySQL连接控制插件介绍
2021/09/25 MySQL
继承Win10缺点!教你关闭Win11烦人的网络搜索
2021/11/23 数码科技