document对象

Document对象代表整个html文档,可用来访问页面中的所有元素,是最复杂的一个dom对象,可以说是学习好dom编程的关键所在。

Document对象是window对象的一个成员属性,通过window.document来访问,当然也可以直接使用document。

document对象常用的函数和属性可参考http://www.w3school.com.cn/jsref/dom_obj_document.asp

getElementById() 返回对拥有指定 ID 的第一个对象的引用。(如果有相同的id则只取第一个)
createElement() 创建一个指定标签名的元素(比如:动态创建超链接)

  getElementById()的使用

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>document示例</title>
  6. <script type="text/javascript">
  7. function test() {
  8. var myHref = document.getElementById("a1");//相同id标签只找第一个
  9. alert(myHref.innerText);
  10. }
  11. </script>
  12. </head>
  13. <body>
  14. <a id="a1" href="http://www.sohu.com">连接到搜狐</a><br/>
  15. <a id="a1" href="http://www.sina.com">连接到新浪</a><br/>
  16. <a id="a1" href="http://www.163.com">连接到163</a><br/>
  17. <input type="button" value="tesing" onclick="test()" />
  18. </body>
  19. </html>

通过元素名来获取集合getElementsByName()的使用

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>document示例</title>
  6. <script type="text/javascript">
  7. function test() {
  8. //id不能唯一,但是name可以重复
  9. var hobbies = document.getElementsByName("hobby");
  10. //window.alert(hobbies.length);
  11. for (var i = 0; i < hobbies.length; i++) {
  12. //如何判断是否选择
  13. if(hobbies[i].checked) {
  14. window.alert("你的爱好是"+hobbies[i].value);
  15. }
  16. }
  17. }
  18. </script>
  19. </head>
  20. <body>
  21. 请选择你的爱好
  22. <input type="checkbox" name="hobby" value="足球" />足球
  23. <input type="checkbox" name="hobby" value="旅游" />旅游
  24. <input type="checkbox" name="hobby" value="音乐" />音乐
  25. <input type="button" value="tesing" onclick="test()" />
  26. </body>
  27. </html>

通过标签名来获取对象(元素)getElementsByTagName()的使用

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>document示例</title>
  6. <script type="text/javascript">
  7. //通过标签名来获取对象(元素)
  8. function test2() {
  9. var myObjs = document.getElementsByTagName("input");
  10. for (var i = 0; i < myObjs.length; i++) {
  11. window.alert(myObjs[i].value);
  12. }
  13. }
  14. </script>
  15. </head>
  16. <body>
  17. 请选择你的爱好
  18. <input type="checkbox" name="hobby" value="足球" />足球
  19. <input type="checkbox" name="hobby" value="旅游" />旅游
  20. <input type="checkbox" name="hobby" value="音乐" />音乐
  21. <input type="button" value="tesing" onclick="test()" />
  22. <input type="button" value="获取所有input" onclick="test2()" />
  23. </body>
  24. </html>

 dom对象详解--document对象

常用的dom的每个Node节点属性和方法(加强篇)

特别提示:html dom和xml dom都遵循相同dom规范的,所以他们有很多相同的方法和属性,因此我们也可以去查看xml dom的node节点提供的方法和属性。

属性名称 类型 说明
nodeName String 节点名称
nodeValue String 节点值
nodeType Number 节点类型
parentNode Node 父节点
firstChild Node 第一个子节点
lastChild Node 最后一个子节点
childNodes NodeList 所有子节点
previousSibling Node 前一个节点
nextSibling Node 后一个节点
ownerDocument Document 获得该节点所属的文档对象
attributes Map 代表一个节点的属性对象
方法名称 返回值 说明
hasChildNodes() Boolean 当前节点是否有子节点
appendChild(node) Node 往当前节点上添加子节点
removeChild(node) Node 删除子节点
replaceChild(oldNode, newNode) Node 替换子节点
insertBefore(newNode, refNode) Node 在指定节点的前面插入新节点

有如下html文档:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. </head>
  7. <body>
  8. <input type="button" value="Node测试" onclick="test()" /><br>
  9. <table border="1px">
  10. <tr>
  11. <td></td>
  12. <td><input type="button" value="向上走" onclick="move(this)" /></td>
  13. <td></td>
  14. </tr>
  15. <tr>
  16. <td><input type="button" value="向左走" onclick="move(this)" /></td>
  17. <td></td>
  18. <td><input type="button" value="向右走" onclick="move(this)" /></td>
  19. </tr>
  20. <tr>
  21. <td></td>
  22. <td><input type="button" value="向下走" onclick="move(this)" /></td>
  23. <td></td>
  24. </tr>
  25. </table>
  26. <!--把乌龟放在div中-->
  27. <div id="wugui" style="position:absolute;left:100px;top:120px;">
  28. <img src="1.jpg" border="1px" alt="" />
  29. </div>
  30. <!--鸡放在div中-->
  31. <div id="cock" style="position:absolute;left:200px;top:200px;">
  32. <img src="2.jpg" border="1px" alt="" />
  33. </div>
  34. </body>
  35. </html>

dom 节点树:

动态的创建元素(节点)/添加元素(节点)/删除元素(节点)

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>document示例</title>
  6. <script type="text/javascript">
  7. function test1() {
  8. //创建元素
  9. var myElement = document.createElement("a"); //??写希望创建的html元素标签名
  10. //给新的元素添加新的必要的信息
  11. myElement.id = "id1";
  12. myElement.href = "http://www.sina.com.cn";
  13. myElement.innerText = "连接到sina";
  14. //定位
  15. myElement.style.left = "400px";
  16. myElement.style.top = "300px";
  17. myElement.style.position = "absolute";
  18. //添加到document.body
  19. document.body.appendChild(myElement);
  20. }
  21. function test2() {
  22. var myButton = document.createElement("input");
  23. myButton.type = "button";
  24. myButton.value = "这是动态建立的按钮";
  25. document.getElementById("div1").appendChild(myButton);
  26. }
  27. function test3() {
  28. var myElement = document.createElement("input");
  29. myElement.type = "text";
  30. myElement.value = "我是输入框";
  31. myElement.id = "text_id1";
  32. document.getElementById("div1").appendChild(myElement);
  33. }
  34. function test4() {
  35. //删除一个元素(删除一个元素前提:必需获得父元素)
  36. //这是第一种删除方法(不灵活)
  37. //document.getElementById("div1").removeChild(document.getElementById("text_id1"));
  38. //第二种方法(推荐此方法)
  39. document.getElementById("text_id1").parentNode.removeChild(document.getElementById("text_id1"));
  40. }
  41. </script>
  42. </head>
  43. <body>
  44. <input type="button" value="动态的创建一个超链接" onclick="test1()" />
  45. <input type="button" value="动态的创建一个按钮" onclick="test2()" />
  46. <input type="button" value="动态的创建一个输入框" onclick="test3()" />
  47. <input type="button" value="删除一个元素(id为text_id1)" onclick="test4()" />
  48. <div id="div1" style="width: 200px; height: 400px; border: 1px solid red;">div1</div>
  49. </body>
  50. </html>

node属性方法的使用[前、后节点功能在IE8以上浏览器未通过测试]

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <script type="text/javascript">
  7. function test() {
  8. //获得div1(乌龟div)
  9. var wuguidiv = $("wugui");
  10. //window.alert(wuguidiv.nodeName+" "+wuguidiv.nodeType+" "+wuguidiv.nodeValue);// DIV 1 null
  11. window.alert(wuguidiv.childNodes.length+" "+wuguidiv.nextSibling.nodeValue);
  12. window.alert(wuguidiv.childNodes.length+" "+wuguidiv.previousSibling.nodeValue);
  13. window.alert("父亲:"+wuguidiv.parentNode.parentNode);
  14. }
  15. function $(id) {
  16. return document.getElementById(id);
  17. }
  18. </script>
  19. </head>
  20. <body>
  21. <input type="button" value="Node测试" onclick="test()" /><br>
  22. <table border="1px">
  23. <tr>
  24. <td></td>
  25. <td><input type="button" value="向上走" onclick="move(this)" /></td>
  26. <td></td>
  27. </tr>
  28. <tr>
  29. <td><input type="button" value="向左走" onclick="move(this)" /></td>
  30. <td></td>
  31. <td><input type="button" value="向右走" onclick="move(this)" /></td>
  32. </tr>
  33. <tr>
  34. <td></td>
  35. <td><input type="button" value="向下走" onclick="move(this)" /></td>
  36. <td></td>
  37. </tr>
  38. </table>
  39. <!--把乌龟放在div中-->
  40. <div id="wugui" style="position:absolute;left:100px;top:120px;">
  41. <img src="1.jpg" border="1px" alt="" />
  42. </div>
  43. <!--鸡放在div中-->
  44. <div id="cock" style="position:absolute;left:200px;top:200px;">
  45. <img src="2.jpg" border="1px" alt="" />
  46. </div>
  47. </body>
  48. </html>

document属性的使用[IE9中测试通过]

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>document属性的使用</title>
  6. <script type="text/javascript">
  7. document.fgColor = "white";// 前景色
  8. document.bgColor = "black";// 背景色
  9. alert(document.title);//获得title信息
  10. alert(document.URL);//获得URL地址信息
  11. </script>
  12. </head>
  13. <body>
  14. hello,world
  15. </body>
  16. <script type="text/javascript">
  17. window.alert(document.body);
  18. </script>
  19. </html>

body对象

body对象代表文档的主体(HTML body)。

body对象是document对象的一个成员属性,通过document.body来访问。

使用body对象,要求文档的主体创建后才能使用,也就是说不能在文档的body体还没有创建就去访问body。

 innerText()与innerHTML()区别

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Document</title>
  6. <script type="text/javascript">
  7. function test() {
  8. //document.getElementById("myspan").innerText = "<a href='http://www.sohu.com'>连接到搜狐</a>";// innerText 浏览器作为文本解析
  9. document.getElementById("myspan").innerHTML = "<a href='http://www.sohu.com'>连接到搜狐</a>";//innerHTML 浏览器作为html解析
  10. }
  11. </script>
  12. </head>
  13. <body>
  14. <span id="myspan"></span>
  15. <input type="button" onclick="test()" value="测试" />
  16. </body>
  17. </html>

onscroll  用户拉动滚动条时触发

特别说明:onscroll在使用时需要遵循html4.0的标准,否则不能执行,也可以使用window.onscroll=函数名来代替body对象的onscroll事件。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>onscroll与onselectstart的使用示例</title>
  6. <script type="text/javascript">
  7. function window_onscroll() {
  8. myHref.style.top = document.body.scrollTop + 50;
  9. myHref.style.left = document.body.scrollLeft;
  10. }
  11. function document_onselectstart() {
  12. alert("版权所有,严禁拷贝");
  13. //返回false,可以禁止用户选网页中的文本;当用户选文本时会触发onselectstart事件,返回false就不会选中
  14. return false;//也可在body中加入onselectstart="return false"同样达到这个效果
  15. }
  16. </script>
  17. <!-- 还有这样一种写法哟 -->
  18. <script type="text/javascript" for="document" event="onselectstart">
  19. //这样等于在body上写入onselectstart="return false"
  20. return document_onselectstart();
  21. </script>
  22. </head>
  23. <body onscroll="window_onscroll()">
  24. <textarea id="textarea" name="textarea" rows="500" cols="500">这样等于与在body上写入onselectstart="return false"</textarea>
  25. <a href="http://www.sohu.com" id="myHref" style="left: 0px; top: 50px; position: absolute; word-break: keep-all;">
  26. <img src="sohu.jpg">
  27. </a>
  28. </body>
  29. </html>

一个小案例:一个小太阳,当它碰到边框后,就自动的转变方向,很多流氓网站就有这种广告。

知识点:

  1. document.body.clientWidth //获得客户端浏览器的宽度
  2. document.body.clientHeight //获得客户端浏览器的高度
  3. offsetWidth //获得当前对象的宽度
  4. offsetHeight //获得当前对象的高度

代码如下:

  1. <!-- <!DOCTYPE html>特别注意:必须去掉才能显示正常 -->
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>小太阳</title>
  6. <script type="text/javascript">
  7. //定两个方向(全局变量)
  8. directX = 1;//x轴的方向
  9. directY = 1;//y轴的方向
  10. //小太阳的坐标
  11. sunX = 0;
  12. sunY = 0;
  13. speed = 2;
  14.  
  15. function sunMove() {
  16. sunX += directX*speed;
  17. sunY += directY*speed;
  18. //修改div的left、top
  19. //var sun = document.getElementById("sun");
  20. sun.style.top = sunY+"px";
  21. sun.style.left = sunX+"px";
  22. //判断什么时候转变方向
  23. //x方向(offsetWidth可以返回当前对象的实际宽度)
  24. if(sunX+sun.offsetWidth >= document.body.clientWidth || sunX <= 0) {
  25. directX = -directX;
  26. }
  27. /*
  28. if(sun.style.left+sun.offsetWidth >= body.clientWidth) {
  29. directX = -1;
  30. } else if(sun.style.left <= 0) {
  31. directX = 1;
  32. }
  33. */
  34. //y方向
  35. if(sunY + sun.offsetHeight >= document.body.clientHeight || sunY <= 0){
  36. directY = -directY;
  37. }
  38. }
  39. setInterval("sunMove()", 10);
  40. </script>
  41. </head>
  42. <body style="background-image: url('ship.jpg');">
  43. <div id="sun" style="position: absolute;">
  44. <img src="sun.gif" />
  45. </div>
  46. </body>
  47. </html>

dom对象详解--document对象(一)的更多相关文章

  1. dom对象详解--document对象(二)

       dom对象详解--style对象 style对象 style对象和document对象下的集合对象styleSheets有关系,styleSheets是文档中所有style对象的集合,这里讲解的 ...

  2. dom对象详解--document对象(三)

     form对象 form对象代表一个HTML表单,在HTML文档中<form>每出现一次,form对象就会被创建.从dom对象层次图看,document.forms对象是当前文档所有for ...

  3. js对象详解(JavaScript对象深度剖析,深度理解js对象)

    js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...

  4. JS中的event 对象详解

    JS中的event 对象详解   JS的event对象 Event属性和方法:1. type:事件的类型,如onlick中的click:2. srcElement/target:事件源,就是发生事件的 ...

  5. Window 对象详解 转自 http://blog.csdn.net/jcx5083761/article/details/41243697

    详解HTML中的window对象和document对象 标签: HTMLwindowdocument 2014-11-18 11:03 5884人阅读 评论(0) 收藏 举报 分类: HTML& ...

  6. Vuejs vm对象详解

    Vuejs vm对象详解 vue数据是怎么驱动视图的?一堆数据放在那里是不会有任何作用的,它必须通过我们的View Model(视图模型)才能操控视图. 图中的model其实就是数据,一般我们写成js ...

  7. Vue实例初始化的选项配置对象详解

    Vue实例初始化的选项配置对象详解 1. Vue实例的的data对象 介绍 Vue的实例的数据对象data 我们已经用了很多了,数据绑定离不开data里面的数据.也是Vue的核心属性. 它是Vue绑定 ...

  8. JavaScript进阶知识点——函数和对象详解

    JavaScript进阶知识点--函数和对象详解 我们在上期内容中学习了JavaScript的基本知识点,今天让我们更加深入地了解JavaScript JavaScript函数 JavaScript函 ...

  9. jQuery的deferred对象详解

    jQuery的deferred对象详解请猛击下面的链接 http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_ ...

随机推荐

  1. hi3531播放1080p60f, 延迟越来越大的问题与解决办法

    问题 hi3531播放1080p60f, 延迟越来越大 左边屏幕是ffplay播放的,右边屏幕是3531播放的 数据是udp组播 mpegts, h264 12M码流 原因 经过测试发现: 解码器中缓 ...

  2. EF6 在原有数据库中使用 CodeFirst 总复习(三、重建迁移)

    本来原来学的时候,挺顺利的,没想到再次使用,还是遇到很多问题,导致更新失败,所以,只能重建迁移,免得看着乱乱的. 一.删除迁移,将数据恢复到(一)结束状态 1.删除文件夹 2.删除表 3.删除列 4. ...

  3. SQL-LINQ-Lambda语法对照,好记性不如烂笔头

    忘记的时候就翻阅翻阅吧~~ SQL LINQ Lambda SELECT *FROM HumanResources.Employee from e in Employees select e Empl ...

  4. Java实现Socket之WhoisClient

    Java实现Socket之WhoisClient 代码内容 从常用的whois服务器的43号端口得到对应域名的所有注册信息并显示出来 代码实现 /* WhoisClient.java */ impor ...

  5. C#和asp.net执行外部EXE程序

    这两天研究下.Net的执行外部EXE程序问题,就是在一个程序里通过按钮或其他操作运行起来另外一个程序,需要传入参数,如用户名.密码之类(实际上很类似单点登录,不过要简单的多的多):总结如下: 1.CS ...

  6. How to Build FFmpeg for Android

    http://www.roman10.net/how-to-build-ffmpeg-for-android/ ffmpeg is an open-source platform for record ...

  7. 你所必须掌握的三种异步编程方法callbacks,listeners,promise

    目录: 前言 Callbacks Listeners Promise 前言 coder都知道,javascript语言运行环境是单线程的,这意味着任何两行代码都不能同时运行.多任务同时进行时,实质上形 ...

  8. JavaScript的DOM操作(2)

    补充:   回车符\r和换行符\n的区别:\r 相当于enter,是段落与段落之间的区别, \n 相当于shift+enter,是行与行之间距离,比较小 几种window操作方法: 1.获取当前窗口大 ...

  9. UIlabel 显示模糊

    问题: 今天遇到连续两个label一个显示的比较清楚,比较锐利,而另一个对比下有点模糊. 原因: 在使用UILabel等继承于UIView的控件时,如果frame的rect不是整数的情况下,就会显示起 ...

  10. 【转载】Extjs 中id与itemId的区别

    为了方便表示或是指定一个组件的名称,我们通常会使用id或者itemId进行标识命名.(推荐尽量使用itemId,这样可以减少页面唯一标识而产生的冲突) id:        id是作为整个页面的Com ...