前端基础之BOM和DOM

BOM是指浏览器对象模型,他使JavaScript有能力与浏览器进行对话

DOM是指文档对象模型,通过它,可以访问HTML文档的所有元素

BOM

简单的说就是可以使用js命令,对浏览器进行一些操作

navigator对象(了解即可)
navigator.appName  // Web浏览器全称
navigator.appVersion  // Web浏览器厂商和版本的详细字符串
navigator.userAgent  // 客户端绝大部分信息
navigator.platform   // 浏览器运行所在的操作系统
screen对象(了解即可)
screen.availWidth - 可用的屏幕宽度
screen.availHeight - 可用的屏幕高度
history对象(了解即可)
history.forward()  // 前进一页
history.back() // 后退一页
location对象

获取当前页面的地址(URL),并把浏览器重新定向到新的页面

location.href  获取URL
location.href="URL" // 跳转到指定页面
location.reload() 重新加载页面
弹出框

警告框

用于确保用户可以得到某些信息,当警告框出出现后,用户西需要点击确定按钮才能继续进行操作

alert("你看到了吗?");

确认框

用于使用户可以验证或者接收某些信息,当确认框出现后,用户需要点击确定或者取消才能继续进行操作,当用户点击的是确定则返回true,如果用户点击的使取消则返回的是false

confirm('are you sure?')

提示框

提示用户在进入某个页面之前需要输入某个值,必须要先进行确定以及取消才能继续执行,输入完成之后,如果点击的是确定,则返回输入的信息,如果点击的是取消,返回的是null

prompt('请输入你的信息')
计时相关

使用之后不是立即执行,而是间隔一段时间之后来执行函数中的代码。

var t = setTimeout('js语句',毫秒)     1000毫秒 = 1秒

取消运行间隔计时

clearTimeout(t)

在间隔某一段时间之后循环执行函数中的代码

var t = serInterval('js语句',时间间隔)

取消循环计时

clearInterval(t)

DOM

DOM是一套对文档的内容进行抽象和概念化的方法,简单的说就是对浏览器中的js文档进行操作。

HTML DOM模型被构造为对象树

DOM标准规定HTML文档中每一个成分都是一个节点(node)

  • 文档节点(document对象):代表整个文档
  • 元素节点(element对象):代表一个元素(标签)
  • 文本节点(text对象):代表元素(标签)中的文本
  • 属性节点(attribute对象):代表一个属性,元素(标签)才有属性
  • 注释是注释节点(commment对象)

javascript可以通过DOM对HTML的影响:

  • 可以改变所有的HTML元素
  • 可以改变页面中所有的HTML属性
  • 可以改变页面中所有CSS样式
  • 可以对页面中所有时间做出反应
查找节点
> document.getElementsByClassName('c1')   结果直接是数组,不是对象本身
< HTMLCollection [div.c1] > document.getElementsByTagName('span') 查找js中所有的span
< HTMLCollection [span.c2] > document.getElementById('d1') 查找js中的d1,返回的是一个对象本身,
< p id=​"d1">​
我是你爸爸
​</p>​
其他查找节点的方法
document.getElementById           根据ID获取一个标签
document.getElementsByClassName 根据class属性获取
document.getElementsByTagName 根据标签名获取标签合集 parentElement 父节点标签元素
children 所有子标签
firstElementChild 第一个子标签元素
lastElementChild 最后一个子标签元素
nextElementSibling 下一个兄弟标签元素
previousElementSibling 上一个兄弟标签元素
新建节点
var imgEle = document.createElement('img')   # 创建一个新的节点
给新节点添加属性
1.imgEle.src = '111.jpg'   # 只能添加默认属性
2.imgEle.setAttribute('username','wang') # 可以添加自定义属性和默认属性
插入图片
var divEle = document.getElementsByClassName('c1')[0]   # 查找出来是数组,使用索引取值
divEle.append(imgEle)
插入连接
# 新建一个a标签
> var aEle = document.createElement('a')
# 添加a标签的属性,访问地址
> aEle.setAttribute('href','http://www.baidu.com')
# 给a标签添加文字,
> aEle.innerText = '点击'
# 获取a标签需要插入的地方,默认插在最后一个位置
> var divEle = document.getElementsByClassName('c1')[0]
# 将a标签插入到c1中
> divEle.append(aEle) # 扩展
# 在...之前插入
> var cEle = document.getElementsByClassName('c2')[0] > divEle.insertBefore(aEle,cEle)
全局文本替换
> var divEle = document.getElementByClassName('c1')[0]

> divEle.innerText 

> divEle.innerHTML

注意:divEle.innerText 和 divEle.innerHTML 的相同点:当后边执行的是文字的时候,都能执行替换文字的作用

不同点:divEle.innerHTML 输入的是HTML内的代码类型的时候会直接执行

divEle.innerText 会将输入的内容直接打印出来。

获取值操作
  • divEle.innerText :获取某个节点内的所有文本
> divEle.innerText
< "我是你爸爸"
  • **divEle.getAttribute('value') ** : 获取所在节点中的属性的值
> divEle.getAttribute('id')
< "d1"
  • divEle.value:可以选择用户输入和选择的值,适用于input,select,textarea,不适合多选

  • ilEle.files[0]:可以查看文件的内容

删除值操作
  • divEle.removeAttribute('age'):删除属性值
  • divEle.removeChild(aEle):删除节点
# 先获取需要删除的节点
> var aEle = document.getElementsByTagName('a')[0]
# 将节点从父节点中删除
> divEle.removeChild(aEle)
操作标签类属性
var divEle = document.getElementsByTagNama('div')[0]
  • 查看类列表 被附加了哪些属性

    divEle.classList
  • 删除类列表中的属性

    divEle.classList.remove('属性')
  • 添加类列表的属性

    divEle.classList.add('属性')
  • 判断类列表有没有这个属性

    divEle.classList.contains('属性')
  • 判断类列表有没有这个属性,有了就删除,没有就添加

    devEle.classLisr.toggle('属性')
样式操作

使用DOM对css的样式进行操作,

var pEle = document.getElementByTagName('p')[0]

pEle.style.color = 'red'

pEle.style.backgroundColor = 'red'

pEle.style.fontSize = '48px'

pEle.style.padding = '20px'

pEle.style.margin = '20px'
事件

当符合某个条件下,自动触发的动作/相应

  • 常见的事件
onclick        当用户点击某个对象时调用的事件句柄。
ondblclick 当用户双击某个对象时调用的事件句柄。 onfocus 元素获得焦点。 // 练习:输入框
onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动) onkeydown 某个键盘按键被按下。 应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress 某个键盘按键被按下并松开。
onkeyup 某个键盘按键被松开。
onload 一张页面或一幅图像完成加载。
onmousedown 鼠标按钮被按下。
onmousemove 鼠标被移动。
onmouseout 鼠标从某元素移开。
onmouseover 鼠标移到某元素之上。 onselect 在文本框中的文本被选中时发生。
onsubmit 确认按钮被点击,使用的对象是form。

js绑定事件

1.直接写一个button标签,在里边进行定义

<button onclick="func()">按钮</button>

2.使用标签查找动态绑定的方式

function func() {
alert('我被点击了')
}
var i1Ele = document.getElementById('d1');
i1Ele.onclick = function () {
// i1Ele标签被点击之后 你能做的事
func()
}

3.js代码书写位置

1.可以在head内,用script标签书写,使用onload等待某某加载完毕之后才触发

2.直接写在body最下方

Web前端 --- BOM和DOM的更多相关文章

  1. 进击的Python【第十五章】:Web前端基础之DOM

    进击的Python[第十五章]:Web前端基础之DOM 简介:文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示 ...

  2. 前端——BOM与DOM

    目录 前戏 window对象 window的子对象 navigator对象(了解即可) screen对象(了解即可) history对象(了解即可) location对象 弹出框 计时相关 DOM H ...

  3. 前端BOM和DOM

      前端基础之BOM和DOM   前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些 ...

  4. 前端 -- BOM和DOM

    一,引入 到目前为止,已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...

  5. 前端——BOM和DOM

    要想和浏览器有交互的动作,即要继续学习DOM,BOM. JavaScript分为 ECMAScript,DOM,BOM. BOM (Browser Object Model) 是指浏览器对象模型,他使 ...

  6. web前端基础知识 Dom

    文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...

  7. web前端----JavaScript的DOM(三)

    一.JS中for循环遍历测试 for循环遍历有两种 第一种:是有条件的那种,例如    for(var i = 0;i<ele.length;i++){} 第二种:for (var i in l ...

  8. web前端----JavaScript的DOM(二)

    前面在DOM一中我们知道了属性操作,下面我们来了解一下节点操作.很重要!! 一.节点操作 创建节点:var ele_a = document.createElement('a');添加节点:ele_p ...

  9. web前端----JavaScript的DOM(一)

    一.什么是HTML  DOM HTML  Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM 把 HTML 文档呈现 ...

随机推荐

  1. TCP/UDP网络编程调试助手下载

    下载地址:可能需要谷歌:软件干净,挺好用的,如果有更好的,欢迎留言! https://www.waveshare.com/wiki/File:TCP-UDP-Debug.7z

  2. [转帖]鲁大师Q3季度PC内存排行:DDR3彻底淘汰 DDR5要来了

    鲁大师Q3季度PC内存排行:DDR3彻底淘汰 DDR5要来了 https://www.cnbeta.com/articles/tech/902347.htm 10月23日消息,今天鲁大师公布Q3季度P ...

  3. Spring+SpringMVC+Mybatis(SSM)框架集成搭建

    Spring+SpringMVC+Mybatis框架集成搭建教程 一.背景 最近有很多同学由于没有过SSM(Spring+SpringMvc+Mybatis , 以下简称SSM)框架的搭建的经历,所以 ...

  4. python 之 数据库(修改表、复制表、删除表、单表查询)

    10.8 修改表.复制表.删除表 10.81 修改表 alter table . 修改表名 alter table 表名 rename 新表名; . 增加字段 alter table 表名 add 字 ...

  5. PAT甲级题分类汇编——线性

    本文为PAT甲级分类汇编系列文章. 线性类,指线性时间复杂度可以完成的题.在1051到1100中,有7道: 题号 标题 分数 大意 时间 1054 The Dominant Color 20 寻找出现 ...

  6. 1010 Radix:猥琐的测试数据

    谨以此题纪念边界测试数据浪费了我多少时间:https://pintia.cn/problem-sets/994805342720868352/problems/994805507225665536 # ...

  7. 小白入门.有函数F(x)=(x+1)^2和G(x)=2x+1.输入x值计算F(G(x))。

    #include<stdio.h> #include<math.h> void main() { float x,y; printf("Please input x\ ...

  8. CSS实现自适应分隔线的N种方法

    分割线是网页中比较常见的一类设计了,比如说知乎的更多回答 这里的自适应是指两边的横线会随着文字的个数和父级的宽度自适应 偷偷的看了一下知乎的实现,很显然是用一块白色背景覆盖的,加一点背景就露馅了 心想 ...

  9. Qt4 和 Qt5 模块的分类

    Qt5 与 Qt4 其中的一个区别是底层架构进行了改变,Qt5 引入了更加详细的模块化的概念,将众多功能细分到几个模块之中,Qt4 则是一种粗略的划分.本文主要对 Qt5 和 Qt4的模块进行一个简单 ...

  10. Centos7阿里云安装OpenProject-亲测

    10/182019年10月18日13:50 参考 <https://ywnz.com/linuxyffq/4085.html> 说在前头:网上有各种教程,包括官方自己的教程,在阿里云服务器 ...