版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、深入解读 javascript中 bom 和 dombom定义了 javascript可以进行操作的浏览器的各个功能部件的接口,提供访问文档各个功能部件(如窗口本身、屏幕功能部件、浏览历史记录等)的途径以及操作方法。遗憾的是, bom只是 javascript脚本实现的一部分,没有任何相关的标准,每种浏览 器都有自己的bom实现,这可以说是bom的软肋所在通常情况下浏览器特定的javascript 扩展都被看作bom的一部分,主要包括:关闭、移动浏览器及调整浏览器窗口大小;弹出新的浏览器窗口;提供浏览器详细信息的定位对象;提供载入到浏览器窗口的文档详细信息的定位对象;提供用户屏幕分辨率详细信息
2、的屏幕对象;提供对 cookie的支持;加入 activexobject类扩展 bom,通过 javascript实例化 activex对象。bom有一些事实上的标准,如窗口对象、导航对象等,但每种浏览器都为这些对象定义或扩展了属性及方法。document object model,这个就是标准了,由著名的w3c 制定,目前最高的级别是 level 3,不过 3 还没有彻底完成。目前主流的浏览器都可以支持到(仅仅是支持到哦,并不是完全遵守的)level 2,对html ,也就是 html4.x,目前最高的是4.01 ,后来 w3c 向把 html统一向 xml 靠拢,于是就有了 xhtml1.
3、0 ,再后来, w3c 想搞一个 xhtml2.0,结果进度缓慢,加之各大厂商又不看好, 于是就有了 html5.01、创建节点1. createelement():2. vara =document.createelement(“p”);它创建的是一个元素节点,所以nodetype 等于 1, a.nodename 将返回 p。注意; createelement()方法创建出来的新元素节点不会被自动添加到文档里,既然没添加到文档里,说明它还是一个游离的状态。所以它也没有nodeparent属性。如果想把它添加到文档里,可以使用appendchild()或者 insertbefore()方法或
4、者 replacechild()方法。当然我们在前面的例子中,自己写了一个insertafter()方法,比如:3. vara =document.createelement(“p”);4. document.body.appendchild(a);注意: appendchild()默认是添加到文档的最后。也就是 lastchild子节点。 如果想添加到某个地方,可以使用insertbefore()。如果想在元素插入之前给元素添加属性。可以这么做:5. vara =document.createelement(“p”);6. a.setattribute(“title”, ”mydemo”);
5、7. document.body.appendchild(a);8. createtextnode():9. varb =document.createtextnode( “mydemo”);它创建的是一个文本节点,所以nodetype 等于 3 。b.nodename 将返回 #text ;跟createelement()一样,用 createtextnode()创建的节点也不会自动添加到文档里。需要使 用 appendchild()或者 insertbefore()方法或者 replacechild()方法。它经常与createelement()配合使用,知道为什么吗?(一个元素节点,一个
6、文本节点。)10. varmes =document.createtextnode(“helloworld ”);11. varcontainer=document.createelement(“p”);12. container.appendchild(mes);13. document.body.appendchild(container);2、复制节点clonenode(boolean):14. varmes =document.createtextnode(hello world);15. varcontainer=document.createelement(p);16. conta
7、iner.appendchild(mes);17. document.body.appendchild(container);18. varnewpara=container.clonenode(true);/true和 false的区别19. document.body.appendchild(newpara );注意: true的话:是 aaaa 克隆。 false : 只克隆 ,不克隆里面的文本。可以自己写个例子,然后用firebug看看。克隆后的新节点,和createtextnode()一样不会被自动插入到文档。需要appendchild();另外还有一个注意:如果克隆后, id 一样
8、,不要忘记用setattribute(“id ” ,“ another_id“); 改变新的节点的id 。3、插入节点appendchild() :1. varcontainer=document.createelement(p);2. vart =document.createtextnode(cssrain);3. container.appendchild(t);4. document.body.appendchild(container);它经常跟 createelement()和 createtextnode(),clonenode()配合使用。另外appendchild()不仅可以
9、用来追加新的元素,也可以你挪动文档中现有的元素。看下面的例子:5. msg 6. content7. aaaaaaaa8. 9. varmes =document.getelementbyid(msg);10. varcontainer=document.getelementbyid(content);11. container.appendchild(mes);12. 13. / 发现 msg 放到 content后面去了。14. 15. content16. msg 17.18. aaaaaaaa第二个参数是可选,如果第二个参数不写,将默认添加到文档的最后,相当于appendchild()
10、;我们看看 insertbefore()怎么使用:19. 20. 1111 21. msgtest22. 222 23. aaaaaaaa24. 25. 26. varmsg =document.getelementbyid(msg);27. varaaa =document.getelementbyid(aaa);28. vartest=document.getelementbyid(cssrian);29. test.insertbefore( msg , aaa );30. 31. /我们发现 id 为 msg 的 插入到了 aaa 的前面。js 内部处理方式跟 appendchild(
11、)相似。4、删除节点removechild():32. 33. 34. a35. b36. c37. 38. 39. 40. varmsg =document.getelementbyid(cssrain);41. varb =document.getelementbyid(b);42. msg.removechild(b);43. 如果不知道要删除的节点的父节点是什么?可以使用parentnode 属性。比如:44. 45. 46. a47. b48. c49. 50. 51. 52. varb =document.getelementbyid(b);53. varc =b .parentn
12、ode;54. c.removechild(b);55. 注意:你如果想把某个节点从一处移动到另一个地方,不必使用removechild ()。可以使用前面的 appendchild()和 insertbefore(),他们都会自动先删除节点,然后移动到你指定的地方。5、替换节点56. element.repalcechild( newnode , oldnode ):57.58. 59. 60. a61. b62. c63. 64. 65. 66. varcssrain=document.getelementbyid(cssrain);67. varmsg =document.getelem
13、entbyid(b);68. varpara=document.createelement(p);69. cssrain.replacechild( para , msg );70. 6、设置 / 获取属性节点1.setattribute();/设置2.3. vara =document.createelement(“p”);4. a.setattribute(“title”, ”mydemo”); 5.6. vara = document.getelementbyid(“cssrain ”);7. varb =a .getattribute(“title”);获取的时候,如果属性不存在,则返
14、回空,注意 ie 和 ff返回不同, 可以看我以前的例子。 返回虽然不同,但是可以用一个方法来判断:if(a.getattribute(“title”)7、查找节点getelementbyid();返回一个对象,对象拥有nodename , nodetype , parentnode , childnodes等属性。getelementsbytagname() :查找标签名的所有元素。 返回一个集合, 可以用循环取出每个对 象,对象拥有 nodename , nodetype , parentnode , childnodes等属性。 例子:8. varps =document.getelem
15、entsbytagname“(9. for(vari =0 ; i ps.length; i+)10. psi.setattribute(“title”, ”hello ”);11. / 也可以使用 : ps.item(i).setattribute(title,hello);12.13.p”);14. 15. 16. a17. b18. c19. 20. 21. 22. varps =document.getelementbyid(cssrain)23. if(ps.haschildnodes)24. alert( ps.childnodes.length );25.26. 8、dom属性我
16、们常用的 3 中类型:nodetype = 1 : 元素节点nodetype = 2 : 属性节点nodetype = 3 : 文本节点如果想记住的话,上面的顺序我们可以看做是从前到后。比如:test从前往后读:你会发现先是元素节点,然后是属性节点,最后是文本节点,这样你就很容易记住了nodetype 分别代表什么类型了。 nodetype 属性经常跟 if配合使用,以确保不会在错误的节点类型上执行错误的操作。比如:27. function cs_demo(mynode)28. if(mynode.nodetype= 1)29. mynode.setattribute(title,demo);
17、30.31.代码解释: 先检查 mynode 的 nodetype 属性,以确保它所代表的节点确实是一个元素节点。和 nodename属性一样,他也是只读属性,不能进行设置.32. aaaaaaaaaaaaaaaa33. 34. varc= document.getelementbyid(c);35. alert( c.nodevalue );/返回 null36. nodevalue 是一个可以读、写的属性。但它不能设置元素节点的值。看下面的例子:37. aaaaaaaaaaaaaaaa38.39.varc= document.getelementbyid(c);40.c.nodevalue
18、= dddddddddddd; /不能设置41./alert( c.firstchild.nodevalue ) /元素节点 包括属性节点和文本节点。42.c.firstchild.nodevalue=test/能设置43.当然我们为了确保能正确运行:可以加一段代码:44. aaaaaaaaaaaaaaaa45.46.varc= document.getelementbyid(c);47.c.nodevalue= dddddddddddd; /不能设置48./alert( c.firstchild.nodevalue )49.if(c.firstchild.nodetype=3 ) /50.c
19、.firstchild.nodevalue=test判断是不是 文本节点/能设置51.52.nodevalue 一般只用来设置文本节点的值。如果要刷新属性节点的值,一般使用setattribute(). childnodes属性:返回一个数组,数组由元素节点的子节点构成。由于文本节点和属性节点都不可能再包含任何子节点,所以他们的childnodes属性永远返回一个空数组。可以使用 haschildnodes方法,它用来判断某个元素有没有子节点。或者if (container.childnodes.length 1); childnodes也是一个只读属性。如果要增加节点, 可以使用 appendchild()或者 insertbefore(),删除节点可以使用removechild();操作后, childnodes属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025法考民法学总论主客观题考题及答案
- 2023儿科急救三基考前密押2套卷及答案全解析
- 2022民航招飞体检英语押题卷及答案 命中率超75%
- 2024广西公职人员学法用法年度考核试题及答案
- 2026年人品维度测试题及答案
- 2023长鑫存储社招跳槽在线笔试高频考题及答案
- fms航模接收机协议书
- 父亲为儿子买房写了协议书
- 大班营养均衡教案
- 塔利班和美国有什么协议书
- 求职材料准备 课件《大学生职业发展与就业指导教程(第二版)》(高教版)演示模板
- TNAHIEM 156-2025 口内数字印模设备消毒灭菌管理规范
- 岩棉板屋面施工方案
- CESA-2024《电梯用超级电容器及其能量回收系统技术规范》
- 轴承游隙知识培训
- 内镜生物监测课件
- 加油站电气安全培训课件
- 皮带走廊脚手架施工方案
- 光伏施工现场安全培训
- 2025年苏州健雄职业技术学院单招职业技能考试题库(各地真题)含答案
- 学堂在线 雨课堂 学堂云 人工智能原理 章节测试答案
评论
0/150
提交评论