博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day4 DOM,BOM
阅读量:4982 次
发布时间:2019-06-12

本文共 9428 字,大约阅读时间需要 31 分钟。

1.     BOM编程

1.1. BOM编程基础

    全称 Browser Object Model,浏览器对象模型。

    JavaScript是由浏览器中内置的javascript脚本解释器程序来执行javascript脚本语言的。

    为了便于对浏览器的操作,javascript封装了对浏览器的各个对象使得开发者可以方便的操作浏览器。

1.2. BOM对象:

1.3. window 对象

       Window 对象是 JavaScript 层级中的顶层对象。

       Window 对象代表一个浏览器窗口或一个框架。

       Window 对象会在 <body> 或 <frameset> 每次出现时被自动创建。

1.3.1.  window中的方法

document    对 Document 对象的只读引用     location    用于窗口或框架的 Location 对象    history    对 History 对象的只读引用。  document.tilte    设置网页的标题    moveto()  将窗口左上角的屏幕位置移动到指定的 x 和 y 位置。    moveby()    相对于目前的位置移动。resizeTo()   调整当前浏览器的窗口。    open()        打开新窗口显示指定的URL(有的浏览器中是打一个新的选项卡)    setTimeout(vCode, iMilliSeconds)        超时后执行代码。setInterval(vCode, iMilliSeconds)        定时执行代码,第一次也是先待,到时再执行。

2.     事件

a) 事件说明

    基本上所有的HTML元素中都可以指定事件属性。

    每个元素支持什么样事件应查询文档。

    所有的事件属性都是以on开头,后面的是事件的触发方式,如:

       onclick,表示单击

       onkeydown,表示键按下

              ...

b) 常用的事件类型:

鼠标点击相关:        onclick 在用户用鼠标左键单击对象时触发。         ondblclick 当用户双击对象时触发。         onmousedown 当用户用任何鼠标按钮单击对象时触发。         onmouseup 当用户在鼠标位于对象之上时释放鼠标按钮时触发。     鼠标移动相关:        onmouseout  当用户将鼠标指针移出对象边界时触发。         onmousemove 当用户将鼠标划过对象时触发。     焦点相关的:        onblur 在对象失去输入焦点时触发。         onfocus 当对象获得焦点时触发。    其他:        onchange 当对象或选中区的内容改变时触发。         onload 在浏览器完成对象的装载后立即触发。         onsubmit 当表单将要被提交时触发。

location 对象

 

Location 对象是由 JavaScript runtime engine 自动创建的,包含有关当前 URL 的信息。

location中的重要方法:

    href属性   设置或获取整个 URL 为字符串。

    reload()   重新装入当前页面

 

screen 对象

       Screen 对象是由 JavaScript runtime engine 自动创建的,包含有关客户机显示屏幕的信息。

属性:

    availHeight   获取系统屏幕的工作区域高度,排除 Microsoft Windows 任务栏。

    availWidth 获取系统屏幕的工作区域宽度,排除 Windows 任务栏。

    height     获取屏幕的垂直分辨率。

    width      获取屏幕的水平分辨率。

           

示例:

    document.write("屏幕工作区: " + screen.availHeight + ", " + screen.availWidth + "<br>");

    document.write("屏幕分辨率: " + screen.height + ", " + screen.width + "<br>");

 document对象

    该对象代表整个文档页面

 

对象的集合:

    all     获取页面所有元素对象

    forms   获取页面所有表单对象

    images 获取页面所有图片对象

    links   获取所有超链接或area对象

 

具体的内容会在学习DOM时学习。

2.     DOM

2.1. DOM简介

    全称Document Object Model,即文档对象模型。

    DOM描绘了一个层次化的树,允许开发人员添加、删除、修改页面的某一部分。

 

    浏览器在解析HTML页面标记的时候,其实不是按照一行一行读取并解析的,

       而是将HTML页面中的每一个标记按照顺序在内存中组建一颗DOM树,

       组建好之后,按照树的结构将页面显示在浏览器的窗口中。

2.2. 节点层次

HTML网页是可以看做是一个树状的结构,如下:    html     |-- head     |     |-- title     |     |-- meta     |     ...     |-- body     |     |-- div     |     |-- form     |     |     |-- input     |     |     |-- textarea     ...   ...   ...

    这是一颗树,是由多个节点(Node)组成的,节点的类型有很多种。

    节点最多有一个父节点,可以有多个子节点。

 

HTML DOM 定义了访问和操作HTML文档的标准方法。

    document

       代表当前页面的整个文档树。

    访问属性

       all

       forms

       images

       links

       body

    访问方法(最常用的DOM方法)

1  2  3 47 
48 javascript49 50 51 这是一个美女52 这是一个美女53 这是一个美女54 百度一下55 百度两下56 百谷一下57 58 59
60
61
62
63 64
View Code

获取节点对象案例

    document.getElementById("html元素的id")

    document.getElementsByTagName("标签名")

    document.getElementsByName("html元素的name") 

    示例:

       1,得到所有的div元素并显示信息(innerHTML)。

       2,得到所有div元素中id为"test"的结果。

1 Var dom = window.document; 2 function testByTagName() { 3     var iptArr = dom.getElementsByTagName("input"); 4     for (var i = 0; i < iptArr.length; i++) { 5         alert(iptArr[i].value); 6     } 7 } 8 // window 对象提供了一个事件, onload 事件 onload(页面加载完毕执行该代码) 是一个事件, 给事件一个方法, 9 //window.onload = testByTagName;10 //2,得到所有标签id为"username"的结果。获取旧value值并设置value值11 function testById() {12     var user = dom.getElementById("username");13     alert(user.value);14     user.value = "rose";15 }16 //testById();17 //3. 获取所有标签name 为like的元素.获取value值.18 function testByName() {19     var likeArr = dom.getElementsByName("like");20     for (var i = 0; i < likeArr.length; i++) {21         alert(likeArr[i].value);22     }23 }24 testByName();
View Code

  案例

显示页面任意一个节点对象的所有子节点的nodeName、nodeType、nodeValue

  属性操作练习

    1,写一个form,其中有多个checkbox。

    2,获取所有选中的数量。

    3,实现全选与全不选的效果。

1  2  3  4 
5 无标题文档 6 7 50 51 52 53 54 55
商品列表
56 全选
57 笔记本电脑3000元
58 笔记本电脑3000元
59 笔记本电脑3000元
60 笔记本电脑3000元
61 笔记本电脑3000元
62 笔记本电脑3000元
63 全选
64 65 66 67 68
View Code

通过节点关系查找节点

    从一个节点出发开始查找:

    parentNode 获取当前元素的父节点。

    childNodes 获取当前元素的所有下一级子元素。

    firstChild 获取当前节点的第一个子节点。

    lastChild  获取当前节点的最后一个子节点。

    nextSibling       获取当前节点的下一个节点。(兄节点)

    previousSibling   获取当前节点的上一个节点。(弟节点)

 

    示例1:

       firstChild属性最普遍的用法是访问某个元素的文本:

       var text=x.firstChild.nodeValue;

      

    示例2:

       parentNode 属性常被用来改变文档的结构。

       假设您希望从文档中删除带有 id 为 "maindiv" 的节点:

       var x=document.getElementById("maindiv");

       x.parentNode.removeChild(x); 

获取节点对象的信息

每个节点都包含的信息的,这些属性是:    nodeType    节点类型     nodeName    节点名称    nodeValue    节点值    nodeType    nodeType 属性可返回节点的类型。            ---------------------------------        元素类型 节点类型         ------------------          元素        1        就是标签元素,例
..
文本 3 标签元素中的文本 注释 8 表示为注释 nodeName nodeName 属性含有某个节点的名称。 -------------------------------- 元素节点的 nodeName 是标签名称 属性节点的 nodeName 是属性名称 文本节点的 nodeName 永远是 #text 文档节点的 nodeName 永远是 #document nodeValue 对于文本节点,nodeValue 属性是所包含的文本。 对于属性节点,nodeValue 属性是属性值。 对于注释节点,nodeValue 属性注释内容。 nodeValue 属性对于文档节点和元素节点是不可用的。
1   2  3  4 36 
37 38 javascript39 40 41 哈哈42
43
44
45
46 47
View Code

节点操作

1.1.1.  创建新节点

    document.createElement("标签名")    创建新元素节点

elt.setAttribute("属性名", "属性值") 设置属性

    elt.appendChild(e)                     添加元素到elt中最后的位置

    elt.insertBefore(new, child);          添加到elt中,child之前。

                                           // 参数1:要插入的节点  参数

2:插入目标元素的位置

    elt.removeChild(eChild)                删除指定的子节点

1   2   3   4  43 
44 无标题文档 45 46 47
48
49
52
53
54
57
58
50 51
55 56
59 60 61 62 63 64 65 92
93 无标题文档 94 95 96
97
98
99
100
101
102
105
106
删除附件
103 104
107 108 109
View Code

案例

  1. 生成二级城市联动菜单
  2. 1  2  3  4 
    5 无标题文档 6 11 55 56 57 64 67 68
    View Code

     

  3. 2.动态生成年、月、日字段
1   2   3   4 121 
122 javascript123 124 125 生日:126 129 132 135 136 137
View Code

      3生产一个验证码

1  2  3  4 34 
35 javascript36 37 38 看不清楚39 40 41
View Code

正则表达式

位置:        ^        开头        $        结尾次数:        *        0或多个        +        1或多个        ?        0或1个        {n}        就是n个        {n,}    至少n个        {n,m}    最少n个,最多m个通配符:        \d        任意数字        \D        任意非数字        \s        任意空白        \S        任意非空白        .        任意字符(除'\n'外)组合:        [a-z]        [0-9]        等组:        (正则)        匹配括号中正则表达式对应的结果,并暂存这个结果。        (?:正则)    匹配括号中正则表达式对应的结果,但不暂存这个结果。        \数字        使用第n个组匹配的结果使用正则的工具(RegExp类与相关方法)创建:        // 方式一        var regex = new RegExp("正则表达式", "标志");        // 方式二        var regex = /正则表达式/标志参数说明:正则表达式:    参见上面的规则 标志:    g (全文查找出现的所有 pattern)     i (忽略大小写)     m (多行查找) 方法:        Regexp.test( str )        String.replace( regex, str )        练习:校验表单
1   2   3   4 127 
128 正则表达式129 130 131
132
133
134
135
139
140
141
145
146
147
150
151
152
157
158
159
165
166 167
168
177
178
179
188
189
190
191
192
193
196
197
姓名: 136 137 138
密码: 142 143 144
确认密码: 148 149
邮箱 153 154 155 156
性别 160 161 男162 163 164 女
爱好: 169 170 eat171 172 sleep173 174 play 175 176
城市 180 186 187
自我介绍
194 195
198
199 200
View Code

 

转载于:https://www.cnblogs.com/Michael2397/p/6046489.html

你可能感兴趣的文章
oracle控制何时触发审计动作
查看>>
NVelocity用法
查看>>
关于xp_cmdshall开启特定账号执行的相关设置步骤
查看>>
[USACO 6.3.2] Cryptcowgraphy
查看>>
.net 开发人员面试题 - 多线程
查看>>
PHP实现的快速排序
查看>>
Dave Python 练习十七 -- 正则表达式
查看>>
混沌开窍---24幅由算法生成的正方形图像
查看>>
java中newInstance和new(转)
查看>>
面向对象技术
查看>>
ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上
查看>>
用Excel做出比肩任务管理软件的操作技巧
查看>>
MySQL基础复习
查看>>
盲签名协议
查看>>
Flutter 获取控件尺寸和位置
查看>>
互联网时代的密码记忆模型
查看>>
51nod_learn_greedy_活动安排2
查看>>
物联网架构成长之路(32)-SpringBoot集成MQTT客户端
查看>>
C++中构造函数的手动和自动调用方式
查看>>
重构----学习心得
查看>>