上周介绍了JS中两个比较重要的东西,循环和函数,这周再给大家介绍一下BOM和DOM

一、BOM

  1、首先来说一下什么是BOM,BOM即浏览器对象模型,说白一点就是与浏览器进行的交互的对象模型。

  2、BOM中的对象:

  (1)、screen对象:可以获取到屏幕的宽度、高度、可用宽度和可用高度

  (2)、location对象:取到浏览器的URL地址信息

    >>>完整的URL路径:协议名://主机名(IP地址):端口号/文件所在路径?传递参数(name1=value1&name2=value2)#锚点

    >>>console.log(location.href);//返回当前完整路径

        console.log(location.protocol);//返回协议名

        console.log(location.host);//返回主机名+端口号
        console.log(location.port);//返回端口号
        console.log(location.pathname);//文件路径
             console.log(location.search);//返回?开头的参数列表
        console.log(location.hash);//返回#开头的锚点

  (3)、使用location提供的方法跳转页面方式

    >>>location.assign("http://www.baidu.com")    //加载新的文档,加载以后可以回退

    >>>location.replace("http://www.baidu.com")  //使用新文档替换当前文档,替换以后不能回退

    >>>location.reload()  //重新加载当前文档,刷新页面 ,其中可以接收参数,当不接受参数时表示在本地刷新当前页面,相当于F5;而当接收一个true参数时表示:强制刷新,从服务器端重新加载页面,相当于Ctrl+F5

  (4)、history 浏览历史

    >>>history.length;   //浏览历史列表的个数

    >>>history.back();  //后退按钮

    >>>history.forward();  //前进按钮

    >>>history.go(1);  跳转到浏览历史的任意一个页面,0表示当前页面,-1表示后一个页面(back),1表示前一个页面(forward)

  3、window对象的常用方法

  注意:在window对象中的所有方法和属性,均可以省略window关键字。例如:window.alert()==alert()

  (1)、alert();弹出一个警告提示框

  (2)、prompt();弹窗接受用户的输入

  (3)、confirm();弹出带有“确定”“取消”按钮的对话框,点击按钮返回true/false

  (4)、close();关闭当前浏览器窗口,在个别浏览器中只能关闭在当前脚本新打开的页面(使用超链接、window.open()等方式打开的页面)

  (5)、open();打开一个新窗口。

    >>>参数一:新窗口的地址

    >>>参数二:新窗口的名字

    >>>参数三:新窗口的各种属性设置,"属性1=值1,属性2=值2,属性3=值3"

  (6)、setTimeout:设置延时执行,只会执行一次,接受两个参数:需要执行的function、毫秒数

                setInterval:设置定时器,每隔n毫秒执行一次,接受两个参数:需要执行的function、毫秒数

  (7)、clearTimeout:清除延时器

          clearInterval:清除定时器

  上面的这些内容只是做一个了解,重点将是下面的DOM环节

二、DOM

  【DOM树节点】

  1、DOM分为三大类:元素节点、属性节点、文本节点。

  2、文本节点、属性节点属于元素节点的子节点。操作时,均需要先取到元素节点,再操作子节点

  3、可以使用getElement系列方法,取到元素节点。

  【查看元素节点】

  1、getElementById:通过id取到唯一节点。如果id重名,只能取到第一个

  注意:获取元素节点时,获取节点的语句必需在DOM渲染完成之后执行,可以有两种方法实现

  (1)、将JS代码写在body之后,(这个比较好)

  (2)、将代码写在window.onload函数中

  2、getElementsByName()通过name属性

  3、getElementsByTagName() 通过标签名

  4、getElementsByClassName() 通过class名

   注意:getElements取到的是数组格式,不能直接添加各种属性,而应该取出数组的每一个单独操作。

  >>>例如getElementsByName("name1")[0].onclick=function(){};

  【查看设置属性节点】

  1、查看属性节点:getAttribute("属性名")

  2、设置属性节点:setAttribute("属性名","属性值")

  注意:查看和设置属性节点 必须先取到元素节点,才能使用!

  setAttribute()属性在ie浏览器中可能会存在兼容性问题。可能不支持这个函数设置style/onclick等样式属性和事件属性, 所以我们采用点符号法替代上述函数:   eg.  dom1.style.color = "" dom1.onclick= ""  dom1.src = ""

  【总结--JS修改DOM节点的样式】

  1、使用setAttribute()设置class和style属性,但是存在兼容性问题,不提倡使用,例如:div.setAttribute("class","cls1");

  2、使用.className直接设置class类,注意是className!例如:div.className = "cls1";

  3、使用.style设置单个属性,注意属性名要用驼峰法则:例如:div.style.backgroundColor = "";

  4、使用.style  或.style.cssText 设置多个样式属性:例如:div.style = "background-color:red;color:yellow;"

                            div.style.cssText = "background-color:red;color:yellow;"

  【查看设置文本特点】

  .innerText:取到或设置节点里面的文字内容;

  .innerHTML:取到或设置节点里面的HTML代码;

  .tagName:取到当前节点的标签名。标签名全部大写显示。

  【根据层次获取节点】

  1、.childNodes: 获取元素的所有子节点。包括回车等文本节点。

        .children:   获取当前元素的所有元素节点(只获取标签)。

  2、.firstChild: 获取元素的第一个子节点。包括回车等文本节点。

        .firstElementChild: 获取元素的第一个子节点。不包括回车等文本节点。

        .lastChild: 获取元素的最后一个子节点。包括回车等文本节点。

        .lastElementChild:获取元素的最后一个子节点。不包括回车等文本节点。

  3、.parentNode: 获取当前节点的父节点。

  4、.previousSibling: 获取当前节点的前一个兄弟节点;包括回车等文本节点。

  5、.nextSibling: 获取当前节点的后一个兄弟节点;包括回车等文本节点。

     .nextElementSibling: 获取当前节点的后一个兄弟节点;不包括回车等文本节点。

  6、.getAttributes: 获取当前节点的属性节点。

  【创建并新增节点】

  1、document.createElement("标签名"):创建节点 。需要配合 setAttribute设置各种新的属性;

  2、父节点.appendChild(新节点):末尾追加方式插入节点

  3、父节点.insertBefore(新节点,目标节点):在目标节点前插入新节点.

  4、被克隆节点.cloneNode(true/false):克隆节点

  >>>传入true: 表示克隆当前节点,以及当前节点的所有字节点;

  >>>传入false或不传:  表示只克隆当前节点,而不克隆子节点。

  【删除或替换节点】

  1、父节点.removeChild(被删节点): 删除父节点中的子节点;

  2、父节点.replaceChild(新节点,老节点): 使用新节点,替换掉老节点。

  【表格对象】

  1、rows属性:返回表格中的所有行数,是一个数组格式

  2、insertRow(index):在指定位置插入一行,index从0开始

  3、deleteRow(index):删除指定一行,index从0开始

  【行对象】

  1、cells属性:返回这一行中的所有单元格,是一个数组格式

  2、rowIndex属性:返回这一行是表格中的第几行。从0开始

  3、insertCell(index):在这一行指定位置插入一个单元格。(index)从0开始

  4、deleteCell(index):删除这一行的额制定单元格;(index)从0开始

  【单元格对象】

  cellIIndex属性:返回这个单元格是本行的第几个,从0开始

  

JS(三)的更多相关文章

  1. js介绍,js三种引入方式,js选择器,js四种调试方式,js操作页面文档DOM(修改文本,修改css样式,修改属性)

    js介绍 js运行编写在浏览器上的脚本语言(外挂,具有逻辑性) 脚本语言:运行在浏览器上的独立的代码块(具有逻辑性) 操作BOM 浏览器对象盒子 操作DOM 文本对象 js三种引入方式 (1)行间式: ...

  2. 一天带你入门到放弃vue.js(三)

    自定义指令 在上面学习了自定义组件接下来看一下自定义指令 自己新建的标签赋予特殊功能的是组件,而指定是在标签上使用类似于属性,以v-name开头,v-on,v-if...是系统指令! v-是表示这是v ...

  3. jquery动态加载js三种方法实例

    这里为你提供了三种动态加载js的jquery实例代码哦,由于jquery是为用户提供方便的,所以利用jquery动态加载文件只要一句话$.getScript(\"test.js\" ...

  4. JS三个编码函数和net编码System.Web.HttpUtility.UrlEncode比较

    JS三个编码函数和net编码比较 总结 1.escape.encodeUri.encodeUriComponent均不会对数字.字母进行编码.2.escape:对某些字符(如中文)进行unicode编 ...

  5. JS三个事件绑定方法

    1. JS三个事件绑定方法 1.1. 使用html进行事件绑定 1.直接在html标签上写入事件类型和事件处理方法. <button onclick = "alert('hello w ...

  6. JS三种消息框的使用

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. vue.js 三种方式安装--npm安装

    Vue.js是一个构建数据驱动的 web 界面的渐进式框架.     Vue.js 的目标是通过简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易上手,便于与第三方库或既有项目整合.     ...

  8. JS——三种嵌入页面的方式

    一 行间事件 二 页面script标签嵌入 三 外部引入 <!DOCTYPE html> <html lang="en"> <head> < ...

  9. 【转】vue.js三种安装方式

    Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...

  10. vue.js三种安装方式

    Vue.js(读音 /vjuː/, 类似于 view)是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件.它不仅易于上手 ...

随机推荐

  1. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

  2. KVM套件-linux基础

    KVM套件 使用KVM的虚拟机,通过KVM的虚拟机克隆功能,提高效率,避免在实验过程中重装系统. 另外,在LINUX系统上使用KVM的虚拟化,可以获得更好性能,且可以提前熟悉企业级虚拟化技术. 过程: ...

  3. JDK安装与配置详细图文教程

    目的:本人健忘,以后难免会重装系统啥的,软件卸了装是常有的事,特此写此详细教程,一是方便自己以后重装的时候可以看看:二是如果有某位初学者有幸光临,也可以给一点参照.下面我会从JDK的下载.安装.环境变 ...

  4. 报表 jasper + ireport5.6

    下载 iReport-5.6.0,jdk7,以及众多lib , 这里我提供下资源(我的百度云) 安装好iReport-5.6.0和jdk7,  在安装目录的\etc\ireport.conf,修改其中 ...

  5. [2017-08-21]Abp系列——如何使用Abp插件机制(注册权限、菜单、路由)

    本系列目录:Abp介绍和经验分享-目录 Abp的模块系统支持插件机制,可以在指定目录中放置模块程序集,然后应用程序启动时会搜索该目录,加载其中所有程序集中的模块. 如何使用这套机制进行功能插件化开发? ...

  6. Asp.net mvc3的“从客户端中检测到有潜在危险的 Request.Form 值”问题解决

    Asp.net mvc3的“从客户端(content_v=\",<p>\n\t<imgalt=\"\" src...\")中检测到有潜在危险的 ...

  7. 运行mvn install时跳过Test

    1.1 方法一 <project> [...] <build> <plugins> <plugin> <groupId>org.apache ...

  8. Stylus-NodeJS下构建更富表现力/动态/健壮的CSS

    --------------------------本文来自张鑫旭大神博客------------------------------ 一.为什么我会讲Stylus,而不是SASS和LESS? SAS ...

  9. oracle 索引失效的情况分析

    见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp54     1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上 ...

  10. 美国站群服务器有利于SEO优化

    美国服务器对于站群来说就是指站长为提升每个网站对搜索引擎的权重,更好的有利于seo优化,单独为该服务器下的多个网站分别配置不同的独立ip. 实际上,站群服务器跟其他服务器并没有多大差异,唯一的区别就是 ...