JavascriptDOM(三)

简介

今天学习第二天的知识,js和BOM对象,再接再厉,fighting~

学习原则

脚踏实地的走好每一步,要想学好高级部分,基础知识必须扎实呀

掌握基本语法,完成小案例,写博客作总结,基本就是这个节奏,下面我们一起快速入门吧

JavaScript快速入门

1. js简介

1.js基于对象和事件驱动的脚本语言,作用在客户端(浏览器)上,无需编译,可由浏览器直接解释运行,JavaScript 是一种弱类型语言
2.js的特点* 交互性好。 人与服务器之间进行沟通。例子:注册的功能,输入特殊字符。浏览器直接给我提示。* 安全性       不可以直接访问本地的硬盘。* 跨平台性  浏览器就可以解析JS的文件。
3.JavaScript和Java是不同(一点关系都没有)* js语言的历史:网景    牛X的公司   开发LiveScript动态效果* LiveScript改名称JavaScript       微软开发的语言JScript* 标准:开发一套语言标签   ECMAScript标准。* 如果想开发js   底层遵循ECMAScript标准,然后在基础上进行扩展。* 如果JScript 底层遵循ECMAScript标准,然后在基础上进行扩展。
4.js和Java的不同点(学习)* js基于对象,Java面向对象       * js解析就可以执行,Java先编译,再执行。* js是弱类型的语言,Java是强类型的语言。
5.js语言的组成* ECMAScript标准          定义语法* BOM(浏览器对象模型)  代表整个浏览器(对象和API)* DOM(文档对象模型)       代表整个文档

2. js和html结合

1.HTML用标签封装数据,CSS通过标签设置样式。js通过对象和语句来操作标签。
2.js和HTML的结合(2种)*.HTML的文件提供了一个标签<script type="text/javascript">  js代码   </script>   特点:<script>标签可以放在页面的任意位置。*.引入外部文件的方式:<script type="text/javascript" src="引入JS的文件的地址" ></script>  注意:如果src的属性引入了外部的文件,在<script>标准中间定义js代码就不会执行。*.扩展的问题:特点:<script>标签可以放在页面的任意位置。一般情况下:不是必须的。建议。如果引入了外部的文件(外部文件没有直接操作HTML的标签,一般的情况下放在<head>中间)如果在本HTML文件上编写JS的代码,如果也没有直接操作HTML的标签,推荐放在</body>标签之后

3. js的关键字/标识符/注释/js的基本数据类型

1.关键字:用到哪个记住关键字 
2.标示符:在js和java是一样的。
3.注释:       // 单行注释     /* 多行注释 */          /** 文档注释 */
4.变量:声明变量。如果Java中:int a = 10; String str = "abc"; 如果是在js中声明变量的话:就使用一个关键字var
5.js的数据类型5种基本数据类型:Undefined、Null、Boolean、Number 和 String * String        字符串在js中单引号和双引号都代表的是字符串* Number        数字类型没有整数和小数之分。* Boolean       布尔类型和java一样的* Null      空,一般给引用赋值* Undefined 未定义(声明变量,没有赋值)js中声明变量使用   vartypeof(变量)  :判断当前的变量是属于什么类型的js语言弱类型的语言,声明任意类型的变量,都可以进行赋值

4. js的运算符

* 算术运算符alert(num / 1000 * 1000);   //3710数字类型不区分整数和小数* 字符串中间数字,做减法js默认字符串解析,再进行运算。alert("abc"-1);     // NaN:非法的数字    弹出NaN(非法的数字)* 0或者null代表是false,非0或者非null代表是true,默认用1来表示。
* 比较运算符==  :只比较值是否相等=== :即比较值又类型是否相等
* 赋值元素  逻辑运算符   三元运算符   和java是一样的null,false,0,'',undefined,NaN为假,其它都为真

5. js的数组(重要)

1.var arrs = ["abc","cba",1,3];
2.var arrs = new Array("abc","cba",..);var arrs = new Array(5);        声明数组,长度是5var arrs = new Array(5,6,7);    声明数组,元素是5,6,7
3.java数组长度不可变,js的数组长度可变。

6. js定义方法(函数)

* js中编写方法,需要使用关键字   function声明方法。
* java定义方法public String run(参数列表 int x,String y){....return null;}
* js中定义方法function 方法名称(参数列表(没有var的关键字) x,y){... 方法体return 返回值; 如果方法有返回值,直接写返回值,如果没有返回值,return可以省略不写。}
* js没有重载的方式
* arguments数组存入传入进来的参数
* 匿名函数:没有名称的函数。起个名称。xxxx.onclick = function(){// 执行}

7. js的全局和局部变量

* js全局变量:定义在<script>标签中间的变量,都是全局变量。不仅可以在<script>标签中间使用,在其他的<script>标签也可以使用。
* js局部变量:定义在方法内部的变量,是局部变量

8. js的String对象

两种声明字符串的方式:var str = "abc";    var str ='abc';var str = new String("abc");
属性:length   -- 字符串长度。(截取字符串操作)
方法:1)和HTML的标签相关的一些方法bold()          把字符串显示粗体。fontcolor()     设置字体演示fontsize()      字体的大小italics()       斜体显示字符串link()          设置字符串为超链接small()         小字体sup()           上标显示字符串2)和Java中String相关的方法charAt()                            返回指定位置的字符indexOf(searchvalue,fromindex)      检索字符串   lastIndexOf()                       从后向钱检索字符串replace()                           替换字符串substring(start,stop)               截取字符串(包含开始,不包含结束)substr(start,length)                截取字符串(从哪开始,截取多长)(包含开始)toLowerCase()                       小写toUpperCase()                       大写

9. js的Array对象

var arr = [];
var arr = new Array(5,6);
属性:length   -- 数组的长度
方法:concat(元素或者数组)join(分隔符)       把数组分隔字符串pop()           删除数组最后一个元素并且返回push(x)         向数组的末尾去添加一个元素

10. js的Date对象

Date对象* 获取当前的时间   var date = new Date();
方法:toLocaleString()        根据本地时间格式,把date转换字符串toLocaleDateString()    只有日期toLocaleTimeString()    只有时间getTime()               获取1970-1-1号至今的毫秒数setTime(毫秒数)            // 通过毫秒数变成当前的时间parse(str)              静态方法,使用Date.parse();解析字符串,返回毫秒数// 2015-1-10 js中不能解析// 可以解析类型   2015,1,10   1/10/2015

11. js的Math对象

* 都是和数学相关的
* 静态的方法 Math.xxx()  ceil(x)     对一个数进行上舍入floor(x)    对一个数进行下舍入round(x)    对一个数进行四舍五入random()    获取随机数   0-1之间小数

12. js的RegExp对象

* 作用:完成表单的校验。
* 声明var reg = new RegExp(表达式);var reg = /表达式/;    特殊的写法:var reg = /^表达式$/;    (记住)
* 方法exec(str)   :如果匹配成功,返回是匹配的结果    test(str)   :如果匹配成功,返回true,如果不成功,返回false    (记住)

13. js的全局函数

* 全局函数游离的状态,函数直接拿过来使用。
eval()  解析字符串,可以执行字符串中的方法
isNaN() 检测是否是非法的数字  如果是true代表是非法的数字下面这些方法都和编码和解码有关。
想传输中文乱码的问题,先把中文编码(UTF-8),进行传输。再把内容进行解码。
encodeURI()     编码
decodeURI()     解码encodeURIComponent()    编码
decodeURIComponent()    解码escape()        编码
unescape()      解码

 

14. 常用事件

1. 聚焦与离焦事件
onfocus             获取焦点的事件
onblur              失去焦点事件
2. 提交与改变事件
onchange            改变事件
onsubmit            控制表单的提交(表单的校验)必须和标签结合到一起	onsubmit的值写法:return run()run必须要有返回值,如果返回true,表单就可以提交,如果返回是false,表单不能提交。
3. 加载与卸载事件 
onload加载事件:HTML文件加载完成后触发事件 
onunload            卸载事件:关闭浏览器的时候,触发事件。
onbeforeunload关闭浏览器之前
4. 鼠标移动事件
mousemove
mouseout
onmouseover 进入某个区域,停留在区域上,触发事件onclick 单击事件 
ondblclick 双击事件 
5. 键盘事件
onkeypress 键盘摁住
onkeydown  键盘按下
onkeyup  键盘弹起 

BOM(浏览器对象模型)快速入门

1. BOM中对象介绍

BOM Navigator           -- 和浏览器版本相关的(**)
BOM Screen              -- 和浏览器屏幕相关的(用的少)
BOM History             -- 和浏览器历史相关的(**)forward()   去下一页back()      去上一页go()        传入值,如果1等于forward()  如果传入-1代表是back()
BOM Location            -- 和浏览器地址栏相关的(***)href        当前页面的地址的链接  获取和设置当前网页的地址window可以省略不写

2. window对象

1.子--->父传值window.parent
2.父--->子传值window.frames
3.self相当于window,代表自身top:代表顶层窗口parent:代表父窗口status:代表状态栏opener:代表打开当前窗口的窗口  ,结合window.open()一起使用方法介绍:window.open()打开一个子窗口窗口属性: width,height,toolbar,menubarwindow.close() 关闭窗口//实现自动触发setInterval("winOpen()",5000);//5000单位是毫秒,反复执行setTimeout("函数",毫秒数);//自动触发,是执行一次,如果要多次,需要递归调用制做浮动广告function changFloat(){document.getElementById("imgpos").style.top=Math.random()*500+'px';document.getElementById("imgpos").style.left=Math.random()*500+'px';}setInterval("changFloat()",500);clearInterval(唯一的id值)           清除定时器clearTimeout(唯一的id值)                清除定时器//弹框练习alert();警告框confirm()确定取消框  点确认返回true,取消返回falseprompt()对话框子父窗口传值问题父子窗口传数据(子-》父:parent,  父----子:frames[0])打开与被打开窗口之间传数据:opener打开模式对话框 showModalDialog()返回子窗口中的值 window.returnValue

 

DOM(文档对象模型)快速入门

1. DOM的简介

1.DOM:Document Object Model     文档对象模型
2.文档:标记型文档(HTML XML)
3.对象:有对象有方法或者属性。
4.模型:抽象。共有的特性封装起来。
5.DOM的作用:会把所有的文档的内容全部(元素、文本、属性)封装对象,方便操作。因为对象提供了方法和属性。
6.DOM如果想操作标记型文档必须先进行解析。(解析器)
7.DOM解析HTML的方式(重点)

2. DOM对象图解

o_DOM%e5%9b%be%e8%a7%a3%e4%ba%9110.png

3. DOM的三个级别和DHTML介绍

1.DOM的三个级别就是DOM发展的过程。
2.DOM的二级别和三级别以后有机会看一下(偷偷的)。
3.DHTML不是一门语言。* HTML              :使用标签封装数据(最基本一步)    <span style="">文本内容</span>* CSS               :设置网页的样式* JavaScript(BOM)   :提供的是程序的控制语句。           for if * DOM               :DOM提供了一些解析的对象

4. Document对象

* document:代表整个文档对象。方法:* getElementById("id的值");           获取是指定id值的元素对象。如果id值相同了,默认获取先加载的那个* getElementsByName("name名称")       获取是name名称相同的元素对象集合,返回。也可以通过下标[0]或者循环遍历* getElementsByTagName("标签名称")  获取是通过标签名称的元素对象集合* write("文本内容")                 把文本的内容输出到客户端上

 

5. 动态添加子节点

function run(){// 创建元素对象var li = document.createElement("li");// 创建文本var text = document.createTextNode("深圳");// 把文本添加到li下面li.appendChild(text);// 把li添加到ul的下面// 获取ul的节点var uls = document.getElementsByTagName("ul");var ul = uls[0];ul.appendChild(li);
}
总结:* 创建元素对象    document.createElement()* 窗口文本对象    document.createTextNode()* 添加子节点     appendChild()

6. Element元素对象

* 都是和操作属性相关的* setAttribute("属性名称","属性值");   设置或者修改属性的值* getAttribute("属性名称");         获取属性的值* removeAttribute("属性名称")       删除属性
* 获取子节点(记住重点)* Element.getElementsByTagName("元素名称"); 获取元素下面所有子节点

7. Node节点对象动态添加子节点

* Document Elment Text Attribute对象都属性Node节点对象。
* Node对象的三个属性* nodeName      属性名称* nodeType      属性类型* nodeValue     属性值元素对象                属性对象                文本对象nodeName            大写标签名称          属性名称                #text   nodeType            1                   2                   3nodeValue           null                属性值             文本的内容
* Node其他的属性(看图)parentNode      父节点(不能获取到空格)firstChild      第一个节点                   firstElementChild 第一个节点lastChild       最后一个节点、                 lastElementChild 最后一个节点nextSibling     下一同级节点                  nextElementSibling 下一同级节点previousSibling 上一同级节点                  previousElementSibling 上一同级节点

8. Node节点对象的方法

* hasChildNodes()   判断是否包含子节点// 先判断ul是否包含子节点var ul = document.getElementById("ulId");// alert(ul.hasChildNodes());
* hasAttributes()   判断是否包含属性// 判断是否包含属性alert(ul.hasAttributes());* appendChild(node)         默认向末尾去添加子节点
* insertBefore(new,old)     在指定的节点之前添加子节点,new:创建新节点 old:在哪个节点之前添加

9. innerHTML属性(重要)

* 不是官方提供的标准,但是所有的浏览器都支持它。获取和设置标签的文本内容。// 如果不使用innerHTML属性,获取文本内容。 nodeValue如果文本对象,获取文本的内容。// 提供了innerHTML属性来获取文本内容// 获取span的标签对象/* var span = document.getElementById("spanId");// alert(span.innerHTML);span.innerHTML = "<font color='red'>我是张三</font>"; *//* onfocus :获取焦点onblur  :失去焦点*/<span id="spanId">我是span区域</span><br/><h4>获取和失去焦点的事件</h4>姓名:<input type="text" name="username" id="nameId" οnfοcus="run1()" οnblur="run2()"/><span       id="uspan"></span><br/>密码:<input type="password" name="password" id="pwdId" /><span id="pspan"></span><br/>function run1(){// 操作uspan,动态设置提示的内容var uspan = document.getElementById("uspan");uspan.innerHTML = "不能输入特殊字符";}function run2(){// 异步请求 ajaxvar uspan = document.getElementById("uspan");uspan.innerHTML = "用户名以存在";}
 

10. 对节点进行CRUD操作

1.查找结点?document.getElementById():根据指定的id查找唯一的结点document.getElenmentsByName():根据name属性查找一组具有相同名称的结点document.getElementsByTagName():根据标签名去查找一组具有相同标签名的结点
2.删除结点?removeChild():删除元素结点,指定了由父结点去删除子结点deleteData()从已载入的XML中的一个文本节点删除文本removeAttribute()从已载入的XML中删除属性。
删除元素 本例使用 removeChild()从载入的XML中删除最后一个<book>元素。 删除属性 本例使用removeAttribute()从已载入的XML中删除所有的"category"属性。 HTMLDOM 表格deleteRow(rowIndex) 从表格删除一行。 
3.添加结点?createElement()来创建一个新的元素setAttribute()方法来设置新的属性/属性值createTextNode() 创建文本节点。 HTMLDOM 在表格中添加结点insertRow() 在表格中插入一个新行。 trinsertCell() 在一行中的指定位置插入一个空的 <td> 元素。 4.修改或替换结点?replaceChild()替换结点克隆结点 cloneNode(true);//true代表复制子结点,false不会复制子结点

转载于:https://www.cnblogs.com/codingpark/p/4227206.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/376332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

看雪 2016CrackMe 攻防大赛 - 1-Crack_Me-凉飕飕

环境&#xff1a; Windows xp 工具&#xff1a; IDA EXEINFOPE OD 0x00 查壳 EXEINFOPE查壳&#xff0c; 无壳 0x01 分析 if ( (unsigned __int16)wParam 0x40B ) // 成功{*(_OWORD *)v22 xmmword_41DB98;v25 0;v23 xmmword_41DBA8;v24 xmmword_41DBB8;memset_4039D0…

使用CSDN-markdown编辑器

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

C++ vector类详解

转自http://blog.csdn.net/whz_zb/article/details/6827999 vector简介 vector是STL中最常见的容器&#xff0c;它是一种顺序容器&#xff0c;支持随机访问。vector是一块连续分配的内存&#xff0c;从数据安排的角度来讲&#xff0c;和数组极其相似&#xff0c;不同的地方就是…

ViewPager的使用方法和实现过程

看图先&#xff1a; 页面中填充内容是随机关键词飞入和飞出动画效果&#xff0c;随后会更新&#xff0c;现在请先无视吧 首先是 导入jar包 下载地址&#xff1a; android-support-v4.jar 布局文件里添加viewPager布局 [html] view plaincopyprint?<android.support.v4.vi…

如何通过浏览器在所有响应内容中查找文本

使用浏览器的开发者工具查找响应文件的内容 ** Chrome ** 版本&#xff1a; 快捷键&#xff1a;CtrlShiftF 可以看到已经查找出来了 ** firefox ** 版本

【Leetcode】【Easy】Implement strStr()

Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 解题&#xff1a; 本题为典型的KMP算法考察题&#xff0c;KMP算法描述为&#xff1a; 设主串S&#xff0c;匹配串P&#xff0c;i为S的索引下…

Jenkins入门指南

新手学习使用Jenkins 安装好Jenkins后如何运行脚本 1.新建item 2.输入任务名称&#xff0c;选择项目类型&#xff0c;点击确定 3.填个描述就好了&#xff0c;新手学jenkins&#xff0c;其他都不看&#xff0c;跑起来再说 4.点这个高级&#xff0c;选择你要运行的脚本所在…

Sublime Text 3 史上最性感的编辑器

↑ ↑ ↑ ↑ ↑ 请看文件夹 ↑ ↑ ↑ ↑ ↑ 下载 / 安装 windows / MAC OS 官网下载&#xff0c;双击安装&#xff0c;这个都会吧&#xff5e; linux linux下安装&#xff0c;一种办法是从官网下载 tar.bz &#xff0c;手动安装。 这里介绍用 apt-get 自己主动安装方法&#xf…

swift入门之TableView

IOS8更新了&#xff0c;oc还将继续但新增了swift语言&#xff0c;能够代替oc编写ios应用&#xff0c;本文将使用swift作为编写语言&#xff0c;为大家提供step by step的教程。 工具 ios每次更新都须要更新xcode&#xff0c;这次也不例外&#xff0c;但使用xcode6&#xff0c;须…

Jmeter BeanShell学习(一) - BeanShell取样器(一)

通过利用BeanShell取样器设置请求发送的参数。 第一步&#xff1a;添加BeanShell取样器 第二步&#xff1a;在BeanShell中输入执行的代码 log.info("脚本开始执行"); //意思是将字符串输出到日志消息中 vars.put("username","123163.com");//…

Jmeter BeanShell学习(一) - BeanShell取样器(二)

利用BeanShell取样器获取接口返回的JSON格式的结果&#xff0c;并将该结果写入到文件。 第一步&#xff1a;添加BeanShell取样器 前面几个取样器的内容查看&#xff1a; https://blog.csdn.net/goodnameused/article/details/96985514 第二步&#xff1a;查看返回的结果格式 …

160 - 50 DueList.5

环境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查壳 可以看出程序有加壳&#xff0c;那么我们下一步就是脱壳了。 0x01 脱壳 看上去没什么特别的地方&#xff0c;就直接 单步跟踪法 来脱壳吧 近call F7&#xff0c;远call F8 来到这里 哈&…

关键路径的概念和算法

AOE网&#xff1a;在一个表示工程的带权有向图中&#xff0c;用顶点表示事件&#xff0c;用有向边表示活动&#xff0c;边上的权值表示活动的持续时间&#xff0c;称这样的有向图叫做边表示活动的网&#xff0c;简称AOE网。AOE网中没有入边的顶点称为始点&#xff08;或源点&am…

160 - 51 DueList.6

环境&#xff1a; Windows xp sp3 工具&#xff1a; Ollydbg exeinfope 0x00 查壳 发现程序没有加壳&#xff0c;那么我们可以直接分析了。 0x01 分析 运行程序看一看 看到错误信息的字符串后我们可以直接搜索了。 可以看到程序会比较输入的长度是否为8位&#xff0c;如…

160 - 52 egis.1

环境&#xff1a;windows xp 工具&#xff1a; 1、OllyDBG 2、exeinfo 3、IDA 0x00 查壳 加了UPX壳&#xff0c;那么就要脱壳了。可以使用单步法来脱壳。 UPX壳还是比较简单的&#xff0c;开头pushad&#xff0c;找个popad&#xff0c;然后就是jmp了。 然后就可以用OD来…

玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)

小弟今天记录一下在Linux系统下面的MySQL的简单使用&#xff0c;如下&#xff1a; 服务启动与关闭 启动与关闭 查看版本 环境 Linux版本&#xff1a;centeros 6.6&#xff08;下面演示&#xff09;&#xff0c;Ubuntu 12.04&#xff08;参见文章末尾红色标注字体&#xff09; M…

实验八第二题

转载于:https://www.cnblogs.com/huangsilinlana/p/3411550.html

敏捷自动化测试(1)—— 我们的测试为什么不够敏捷?

测试是为了保证软件的质量&#xff0c;敏捷测试关键是保证可以持续、及时的对软件质量情况进行全面的反馈。由于在敏捷开发过程中每个迭代都会增加功能、修复缺陷或重构代码&#xff0c;所以在完成当前迭代新增特性测试工作的同时&#xff0c;还要通过回归测试来保证历史功能不…

ios 程序学习

马上着手开发iOS应用程序&#xff1a;五、提交应用与寻找信息 2013-01-11 15:36 佚名 apple.com 我要评论(0) 字号&#xff1a;T | T本文介绍了您已经学习完如何开发一个优秀的iOS应用之后&#xff0c;应该掌握的内容&#xff0c;包括将您的应用提交到App Store让其他人下载&am…

lucene4入门(2)搜索

欢迎转载http://www.cnblogs.com/shizhongtao/p/3440479.html 接着上一篇&#xff0c;这里继续搜索&#xff0c;对于搜索和创建一样&#xff0c;首先你要确定搜索位置&#xff0c;然后用规定的类来读取。还要注意一点&#xff0c;确定分词器&#xff0c;因为不同的分词器所创建…