前戏

到目前为止,我们已经学过了JavaScript的一些简单的语法。但是这些简单的语法,并没有和浏览器有任何交互。

也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DOM相关知识。

JavaScript分为 ECMAScript,DOM,BOM。

BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”。

DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。

Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分对象的共同祖先,在调用window对象的方法和属性时,可以省略window对象的引用。例如:window.document.write()可以简写成:document.write()。

BOM操作

常见操作

window.innerHeight - 浏览器窗口的内部高度
window.innerWidth - 浏览器窗口的内部宽度
window.open() - 打开新窗口
window.open('https://www.sogo.com/','目标,可以不写','width=800px,height=400px,left=200px')
window.close() - 关闭当前窗口 navigator.appName  // Web浏览器全称
navigator.appVersion  // Web浏览器厂商和版本的详细字符串
navigator.userAgent  // 客户端绝大部分信息
navigator.platform   // 浏览器运行所在的操作系统 screen.availWidth - 可用的屏幕宽度
screen.availHeight - 可用的屏幕高度 location.href 获取URL
location.href="URL" // 跳转到指定页面
location.reload() 重新加载页面

history.forward()
前进一页
history.back()
后退一页
window.location.reload()
刷新当前页面
alert()
警告框
confirm()
确认框
prompt()
提示框 定义一个函数
function showMsg() {
alert('哈哈哈哈哈啊哈哈哈')
}
计时器相关操作(重要)
let t = setTimeout(showMsg,3000) //3000毫秒之后执行函数
clearTimeout(t) // 取消任务 setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。 s = setInterval(showMsg,3000) // 每隔3000毫秒执行一次
clearInterval(s) //取消任务

DOM操作


DOM操作是通过JS代码来操作标签 我们需要先学习如何查找标签之后才能给标签绑定一些JS代码(DOM操作) DOM标准规定HTML文档中的每个成分都是一个节点(node): 文档节点(document对象):代表整个文档
元素节点(element 对象):代表一个元素(标签)
文本节点(text对象):代表元素(标签)中的文本
属性节点(attribute对象):代表一个属性,元素(标签)才有属性
注释是注释节点(comment对象) JavaScript 可以通过DOM创建动态的 HTML: JavaScript 能够改变页面中的所有 HTML 元素
JavaScript 能够改变页面中的所有 HTML 属性
JavaScript 能够改变页面中的所有 CSS 样式
JavaScript 能够对页面中的所有事件做出反应

查找标签

"""
1.js中变量名的命名风格推荐是驼峰体
2.涉及到DOM操作的JS代码应该放在文档的哪个位置
3.js代码查找到的标签如果需要反复使用可以用变量接收 规律 xxxEle
"""
直接查找
document.getElementById('d1')
结果就是标签对象本身
document.getElementsByClassName('c1')
结果是数组里面含有多个标签对象
document.getElementsByTagName('span')
结果是数组里面含有多个标签对象 间接查找
parentElement 父节点标签元素
children 所有子标签
firstElementChild 第一个子标签元素
lastElementChild 最后一个子标签元素
nextElementSibling 下一个兄弟标签元素
previousElementSibling 上一个兄弟标签元素

操作节点

// js代码创建一个标签
let aEle = document.createElement('a') // js 代码操作标签属性
aEle.href = 'https://www.sogo.com/'只能添加默认的属性
setAttribute() 兼容默认属性和自定义属性
getAttribute("age")
removeAttribute("age") // js代码操作标签文本
aEle.innerText = '这个很攒劲!' // js代码查找div标签并将a追加到div内部
let divEle = document.getElementsByTagName('div')[0]
divEle.appendChild(aEle) .innerText 获取标签内部所有的文本内容
.innerText = '文本' 替换/设置标签内部的文本(不识别标签语法) .innerHTML 获取标签内部所有的标签包含文本
.innerHTML= '文本' 替换/设置标签内部的文本(识别标签语法)

获取值操作

1.针对用户输入的和用户选择的标签
标签对象.value
2.针对用户上传的文件数据
标签对象.files fileList [文件对象、文件对象、文件对象]
标签对象.files[0] 文件对象

class与css操作

1.js操作标签css样式
标签对象.style.属性名(下划线没有 变成驼峰体)
let Ele = document.getElementById('d1')
Ele.style.color = 'blue'
'blue'
Ele.style.fontSize = '49px'
'49px' 2.js操作标签class属性
标签对象.classList.add()
标签对象.classList.contains() 判断有没有这个属性
标签对象.classList.remove()
标签对象.classList.toggle()
let Ele = document.getElementById('d1')
Ele.classList.toggle('bg_red'); 有就加, 没有就删

事件

事件可以简单的理解为通过js代码给html标签绑定一些自定义的功能

常用事件

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick 当用户双击某个对象时调用的事件句柄。 onfocus 元素获得焦点。 // 练习:输入框
onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动) onkeydown 某个键盘按键被按下。 应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress 某个键盘按键被按下并松开。
onkeyup 某个键盘按键被松开。
onload 一张页面或一幅图像完成加载。
onmousedown 鼠标按钮被按下。
onmousemove 鼠标被移动。
onmouseout 鼠标从某元素移开。
onmouseover 鼠标移到某元素之上。 onselect 在文本框中的文本被选中时发生。
onsubmit 确认按钮被点击,使用的对象是form。
绑定事件的多种方式
<!--绑定事件的方式1-->
<button onclick="showMsg()">快按我</button>
<!--绑定事件的方式2-->
<input type="button" value="快快快" id="d1">
<script>
function showMsg() {
// let msg = prompt('来来来啦啦啦啦啦');
// console.log(msg)
console.log(this)
}
let inputEle = document.getElementById('d1');
inputEle.onclick = function () {
let currentEle = this
// alert('谁在哪里 来来阿里阿埃里!!!!!')
console.log(this.getAttribute('username'))
} }
function showMsg() {
// let msg = prompt('来来来啦啦啦啦啦');
// console.log(msg)
console.log(this)
}
let inputEle = document.getElementById('d1');
inputEle.onclick = function () {
let currentEle = this
// alert('谁在哪里 来来阿里阿埃里!!!!!')
console.log(this.getAttribute('username'))
</script> 事件函数中的this关键字
this指代的就说当前被操作的标签对象本身
如果事件函数内有多层嵌套那么最好在一开始用变量存储一下防止后续变化
onload
xxxx.onload 等待xxx加载完毕之后再执行后面的代码

事件实战案例

简易输入框
<input type="text" id="d1" value="游戏机"> <script>
let inputEle = document.getElementById('d1')
inputEle.onfocus = function (){
this.value = ''
}
inputEle.onblur = function () {
this.value = '下次再来呦!!!!'
}
</script> 按钮获取案例
<p>username:
<input type="text" id="d1">
<span style="color: red"></span>
</p>
<p>password:
<input type="text" id="d2">
<span style="color: red"></span>
</p>
<button id="suBtn">提交</button>
<script>
//1.查找提交按钮的标签
subEle = document.getElementById('suBtn')
let userNameEle = document.getElementById('d1')
let passWordEle = document.getElementById('d2')
//2.给按钮标签绑定点击事件
subEle.onclick = function () {
//3.查找获取用户输入的标签并获取数据 if(userNameEle.value ==='jason'){ userNameEle.nextElementSibling.innerText = '用户不能是jason'
}
if (passWordEle.value === '123'){
passWordEle.nextElementSibling.innerText = '密码不能是123'
}
}
// 失去焦点 清空
userNameEle.onfocus= function () {
passWordEle.nextElementSibling.innerText =''
userNameEle.nextElementSibling.innerText =''
}
// 失去焦点 清空
passWordEle.onfocus= function () {
passWordEle.nextElementSibling.innerText =''
userNameEle.nextElementSibling.innerText =''
} </script>
省市联动:
<p>省:
<select name="" id="d1"></select>
</p >
<p>市:
<select name="" id="d2"></select>
</p>
<script>
let data = {
"河北": ["廊坊市", "邯郸市"],
"北京": ["朝阳区", "海淀区"],
"山东": ["威海市", "烟台市"],
"安徽": ["芜湖市", "合肥市"],
"上海": ["浦东新区", "静安区"]
}
// 提前查找好省和市的select标签
let proSeEle = document.getElementById('d1');
let citySeEle = document.getElementById('d2');
// 1.获取所有的省信息
for (let pro in data) {
// 2.创建option标签
let proOpEle = document.createElement('option');
// 3.添加文本及属性
proOpEle.innerText = pro;
proOpEle.setAttribute('value', pro);
// 4.将创建好的option标签添加到省下拉框中
proSeEle.appendChild(proOpEle)
}
// 5.给省标签绑定文本域变化事件 onchange
proSeEle.onchange = function () {
citySeEle.innerHTML = ''; // 每次操作市之前清空市数据
// 6.获取用户选择的省信息 根据省获取市信息
let targetProData = this.value;
let cityDataList = data[targetProData];
// 7.循环获取每一个市信息 创建option标签 添加到市下拉框中
for (let i = 0; i < cityDataList.length; i++) {
let cityOpEle = document.createElement('option');
cityOpEle.innerText = cityDataList[i];
cityOpEle.setAttribute('value', cityDataList[i]);
citySeEle.appendChild(cityOpEle)
}
}
</script>

jQuery类库

"""
IE浏览器:前端针对IE有时候需要单独再编写一份代码
"""
Write less, do more 写的更少 做的更多 1.加载速度快
2.选择器更多更好用
3.一行代码走天下
4.支持ajax请求(重点)
5.兼容多浏览器 准备工作
1.下载核心文件到本地引入(没有网络也可以使用)
2.CDN网络资源加载(必须有网络才可以使用)
https://www.bootcdn.cn/
https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js 什么是CDN
内容分发网络 jQuery导入之后需要使用关键字猜可以使用
默认的关键字就说jQuery但是不好输入 >>>: $ jQuery封装了JS代码 让编写更简单 但是又时候JS代码更快 js代码与 jQuery代码对比
let pEle = document.getElementsByTagName('p')[0]
pEle.style.color = 'red' pEle.nextElemnetSibling.style.color = 'green' $('p').first().css('color','yellow').next().css('color','blue')

标签对象与jQuery对象

1.不同的对象能够调用的方法是不同的
在编写代码的时候一定要看清楚手上是什么对象
2.两者可以互相转换
标签对象转jQuery对象
$(标签对象)
jQuery对象转标签对象
jQuery对象[0]

python之路43 JavaScript语法BOM与DOM jQuery对比 标签绑定事件的更多相关文章

  1. JavaScript的BOM和DOM

    JavaScript的BOM和DOM 1,window对象,所有浏览器都支持window对象,它表示浏览器窗口 BOM(browser Object Model)是指浏览器对象模型,它使JavaScr ...

  2. [JavaScript之BOM与DOM]

    [JavaScript之BOM与DOM] BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行"对话". DOM ( ...

  3. Python之路【第十三篇】:jQuery -暂无内容-待更新

    Python之路[第十三篇]:jQuery -暂无内容-待更新

  4. 前端06 /JavaScript之BOM、DOM

    前端06 /JavaScript 目录 前端06 /JavaScript 昨日内容回顾 js的引入 js的编程要求 变量 输入输出 基础数据类型 number string boolean null ...

  5. python之路(十七)-javascript

    JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. ...

  6. Javascript之BOM与DOM讲解

    一.Javascript组成 JavaScript的实现包括以下3个部分: ECMAScript(核心) 描述了JS的语法和基本对象. 文档对象模型 (DOM) 处理网页内容的方法和接口 浏览器对象模 ...

  7. 前端--javaScript之BOM和DOM

    BOM和DOM概述 BOM(Browser Object Model):是指浏览器对象模型,它使js有能力和浏览器进行"对话". DOM(Document Object Model ...

  8. JavaScript之BOM和DOM

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

  9. JavaScript之 BOM 与 DOM

    1. JavaScript 组成 2. DOM.DOCUMENT.BOM.WINDOW 区别 DOM 是为了操作文档出现的 API , document 是其的一个对象:BOM 是为了操作浏览器出现的 ...

  10. JavaScript之BOM和DOM及其兼容操作详细总结

    BOM(浏览器对象模型) 所有浏览器都支持window对象,他表示浏览器窗口. 所有js全局对象,函数,变量均自动成为window对象的成员. 全局变量是window对象的属性. 全局函数是windo ...

随机推荐

  1. NOIP2017总结 & 题解

    day1t1的结论貌似在哪见过,自己稍微验证了一下貌似没记错就没有管了.t2一道很好(keng)的模拟题啊t3自己做题好慢啊,想出来dp打上去最后几分钟才过了大样例,我写的是记忆化搜索,判-1很好判, ...

  2. 【Firefox浏览器】关闭触摸板双指滑动进行前进后退的功能

    痛点 本以为只是Chrome浏览器存在这一奇葩功能,没成想Firefox也沦陷了!有好一阵子在使用Firefox的时候,并未发现其存在这个功能.直到有一天,打开自己的博客,翻阅上篇< [Chro ...

  3. Arctic 基于 Hive 的流批一体实践

    背景 随着大数据业务的发展,基于 Hive 的数仓体系逐渐难以满足日益增长的业务需求,一方面已有很大体量的用户,但是在实时性,功能性上严重缺失:另一方面 Hudi,Iceberg 这类系统在事务性,快 ...

  4. SpringBoot报错: No identifier specified for entity: XXX.XXX.XXX.XXX

    今天练习的时候报错说是 : 没有为实体指定标识符 仔细看了实体类才发现忘记写了一些注解 用JPA写实体类时一些注解是必须的 @entity  标名本类是实体类 @table(name="表名 ...

  5. 研发效能|DevOps 已死平台工程永存带来的焦虑

    最近某位大神在推特上发了一个帖子,结果引来了国内众多卖课机构.培训机构的狂欢,开始贩卖焦虑,其实「平台工程」也不是什么特别高深莫测的东西.闲得无聊,把这位大神的几个帖子薅了下来,你看过之后就会觉得没啥 ...

  6. C#设置picturebox滚动条来实现查看大图片

    要给PictureBox添加滚动条需要以下步骤:    (1)将picturebox放在panel上:   ( 2)将panel的AutoScroll设置为ture:    (3)将picturebo ...

  7. 2022春每日一题:Day 34

    题目:lowbit求和 (没有找到哪个公开题库有这个题) 题意:求数组中任意一对数的异或和的lowbit的总和. 对于异或,二进制位中两个数相等则为0,反之为1,而且此题是要求lowbit,那我们利用 ...

  8. php自定义分页类

    <?php class Paging { private $totalStrip; //总条数 private $pageStrip; //每页条数 private $totalPages; / ...

  9. Go语言核心36讲39

    在上一篇文章中,我介绍了Go语言与Unicode编码规范.UTF-8编码格式的渊源及运用. Go语言不但拥有可以独立代表Unicode字符的类型rune,而且还有可以对字符串值进行Unicode字符拆 ...

  10. 【ASP.NET Core】MVC控制器的各种自定义:修改参数的名称

    在上一篇中,老周演示了通过实现约定接口的方式自定义控制器的名称. 至于说自定义操作方法的名称,就很简单了,因为有内置的特性类可以用.看看下面的例子. [Route("[controller] ...