BOM.DOM

BOM,DOM,jQuery

BOM操作

全称: Browser OBject Model 指浏览器对象模型

window对象

window.open('网址','','width= px,height= px,left=200px')  # 打开新窗口
window.close()  # 关闭窗口
vavigator.userAgent  # 标识自己是一个浏览器

history对象

模拟浏览器的前进后退按钮

history.forward()  # 前进一页
history.back()    # 后退一页

location对象

window.location.href   # 获取当前网址
window.location.href='网址'   # 跳转到后面的网址
# 刷新按钮
window.location.reload()  # 刷新当前页

弹框系列

# 警告框
alert('警告信息')
"弹框"

# 确认框
confirm('确认信息')  
"比较警告框多了一个确定与取消,并拥有返回值,确定=true  取消=false"

# 提示框
prompt('提升信息','可以+默认值')
"填写内容,并有确定与取消  取消=null"  

计时相关(重点)

用来编写定时任务。

一次性定时任务
setTimeout(showMsg,1000(毫秒))  # 开启一个定时任务
# 存储定时任务
let t = setTimeout(showMsg,1000(毫秒))
# 取消定时任务
cLearTimeout(t)

# 代码
<script>
  function showMsg(){
    alert('欢迎光临')
  }
  let t = setTimeout(showMsg,1500)  # 保存定时任务
  clearTimeout(t)  				  # 取消定时任务
</script>
循环定时任务
setInterval(showMsg,1000) # 每隔1000毫秒执行一次
# 保存定时任务
let t = setInterval(showMsg,1000)
# 清除定时任务
cLearInterval(t)

# 函数版
"定义一个循环定时任务函数"
  let t;
  function func(){
    alert('今天星期二')

  }
  t = setInterval(func,6000)
"用一个普通定时任务函数来结束这个循环任务"
 function inner(){
    clearInterval(t)
  }
  setTimeout(inner,12000)  # 时间达到12秒自动使用函数内清除定时功能

DOM操作

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

想通过JS代码来操作标签,先要学习如何查找标签,之后才可以给标签绑定一些JS代码(DOM操作)

DOM操作关键字: document

查找标签
注意事项:
1.js中变量名的命名风格推荐是驼峰体
2.js代码查找到的标签如果需要反复使用可以用变量接收 规律 
				标签名+Ele

# id查找
document.getElementById('id') # 通过id值获取标签
	结果是标签对象本身
let divEle = document.getElementByID('id')
"可以用一个变量名来接收这个查询标签 后面使用只需要引用这个变量名"

# 类查找
document.getElementsByClassName('class值')
	结果是数组 含有多个标签对象

# 标签查找
document.getElementsByTagName('标签名')
	结果也是一个数组 
间接查询
# 准备工作 需要基于一个标签来进行查询操作,通过.的方式
let divele = document.getElementByID('id')
parentElement            父节点标签元素
# 可以用 .的方式获取上一级父标签
children                 所有子标签
# 获取所有的儿子标签 可以加索引位获取单个
firstElementChild        第一个子标签元素
# 获取第一个儿子标签
lastElementChild         最后一个子标签元素
# 获取最后第一个儿子标签
nextElementSibling       下一个兄弟标签元素

previousElementSibling   上一个兄弟标签元素
节点操作
// js代码创建标签
let aEle = document.createElement('a')

// JS代码操作标签属性
aEle.href = 'http://www.baidu.com/'
setAttribute('属性名','属性值')   # 可以添加自定义属性与默认属性
// JS代码操作标签文本
aEle.innerText='这是百度你想啥呢'

// JS代码查找div标签并往div内部加入a标签
let divEle = document.getElementsByTagName('div')[0] 
divEle.appendChild(aEle)
// 把增加的节点放到某个节点的前边。 节点就是标签
divEle.insertBefore(aEle,某个节点);

注意事项: 
"""对于标签添加属性 只能添加一些默认属性,不能添加自定义属性"""



.innerText         // 可以获取标签内部所有文本
.innerText = '文本'  // 替换文本  不识别标签语法

.innerHTML         // 获取标签内部所有的HTML标签 包含文本
.innerHTML = '文本'    //  替换文本  识别标签语法
获取值操作(重点)
# 在JS中找到标签对象后可以通过.value 找到用户输入或选择的值
let inputEle = document.getElementsByTagName('input')[0]
inputEle.value

# 基于文件来说 .value 只能拿到 字符串内容是当前计算机文件路径(还是假的路径)
.files    # 获取文件
.files[0]  # 一个文件情况可以获取 文件对象
针对多个文件可以做for循环拿出来
class与css操作
JS操作CSS样式
查找到需要操作的标签后  标签对象.style.属性名(不需要下划线,编程小驼峰体)
标签对象.style.color= '颜色'       # 改颜色

标签对象.style.fontSize = '40px'    # 改字体大小

# 代码
let spanEle = document.getElementsByTagName('span')[0]
spanEle.style.color='red'
spanEle.style.fontSize='29px'
JS操作class
先获取标签对象(查找到需要操作的标签)
.classList   # 查看当前标签所有的class属性值
.classList.contains('属性值')  # 判断是否有 属性值
.classList.add('属性值')      # 添加属性值
.classList.remove('属性值')  # 删除属性值
.classList.toggle('属性值')    # 有则删 没有添加
事件(重点)

给标签添加一些自定义的功能.

onclick        当用户点击某个对象时调用的事件句柄。
onfocus        元素获得焦点。
onblur         元素失去焦点。
onchange       域的内容被改变。
绑定事件的多种方式
button 按钮标签

方式1 :
<button onclick="showMsg()">后背好痒啊</button>  #单机方式
function showMsg(){
    let msg = confirm('你想帮我挠挠吗');
    console.log(msg)
} 

方式2:
<input type="button" value="快挠挠吧" id="d1">
let inputEle = document.getElementById('d1');
inputEle.onclick = function(){
    alert('好舒服啊')

}
补充说明
 事件函数中的this(这个)关键字 通过打印操作可以帮助我们获取当前被触发事件的那个标签
"""必须使用在查询后     
   如果有嵌套的话必须先提前保存  let currentEle = this 防止后续变化"""
console.log(this.getAttribute('属性')) # 可以获取当前被触发事件的那个标签的属性的值
----------------------------------------------------------------------------------
<input type="button" value="快挠挠吧" id="1">
let inputEle = docment.getElementById('id');
inputEle.onclick = function(){
    let currentEle = this  # 如果有嵌套的话必须先提前保存防止后续变化
    console.log(this)  # 可以获取当前被触发事件的标签 
   # console.log(this.getAttribute('属性')) 
}

placeholder = '用户名' 可以设置 搜索框/登录框 默认显示的值
事件练习题
1. 搜索框 显示 默认值,当鼠标点击上去清空,鼠标离开 显示
<input type="text" value="飞机" id="d2">   // 设置搜索框默认显示
<script>
  let inputEle = document.getElementById('d2')
  inputEle.onfocus = function () {         //  元素获得焦点事件,就是鼠标点击上去时设置为空
    this.value=''
  }
  inputEle.onblur = function (){          //  元素失去焦点事件,就是鼠标点击别的地方设置为 大爷不要走
    this.value = '大爷,不要走'
  }
</script>
====================================================================================
2. 用户登录 登录时的用户名与密码不符 在输入框后方提示
<p>username:
    <input type="text" id="d1">
    <span style="color: red"></span>
</p>
<p>password:
    <input type="text" id="d2">
    <span style="color: brown"></span>
</p>
<button id="suBtn">提交</button>

<script>
    //1.查找提交按钮
    let subEle = document.getElementById('suBtn')
    //2.给按钮绑定点击事件
    subEle.onclick = function () {
        //3.查找用户输入的标签并获取数据
        let userNameEle= document.getElementById('d1')
        let passWordEle = document.getElementById('d2')
        if(userNameEle.value === 'sb') {
            userNameEle.nextElementSibling.innerText = '用户名不可以sb哦'
        }
        if(passWordEle.value === '123') {
            passWordEle.nextElementSibling.innerText = '密码太简单了'
        }
    }
# 点击输入框修改用户名 提示消失 
    let userNameEle = document.getElementById('d1')
    userNameEle.onfocus = function (){
        userNameEle.nextElementSibling.innerText = ''
    }
    let passWordEle = document.getElementById('d2')
     passWordEle.onfocus = function (){
        passWordEle.nextElementSibl
===================================================================================
3. 选择省出现对应的市
<p>省:
    <select name="" id="d1">
        <option value="">请选择</option>
    </select>


</p>
<p>市:
    <select name="" id="d2"></select>

</p>
<script>
    let date = {
        "河北": ["廊坊市", "邯郸市"],
        "北京": ["朝阳区", "海淀区"],
        "山东": ["威海市", "烟台市"],
        "安徽": ["芜湖市", "合肥市"],
    }
    // 提前查找好省和市的select标签
    let proSeEle = document.getElementById('d1');
    let citySeEle = document.getElementById('d2');
    // 1.获取所有省的信息
    for (let pro in date) {
        //2.创建option标签
        let opTionEle = document.createElement('option');
        // 3.添加文本及属性
        opTionEle.innerText = pro;
        opTionEle.setAttribute('value', pro);
        // 4.将创号的option 标签添加到省下拉框内
        proSeEle.appendChild(opTionEle)

    }
    // 5.给省标签绑定文本域变化事件 onchange
    proSeEle.onchange = function () {
        // 每次操作前清空市数据不然会叠加显示
        citySeEle.innerHTML = '';
        // 6 获取用户选择的省信息
        let targetProData = proSeEle.value;
        // 按照获取到的省获取市的信息 字典[]
        let cityDataList = date[targetProData]
        // 7.循环获取市信息,创建option标签 添加到下拉框内
        for (let i = 0; i < cityDataList.length; i++) {
            let city0pEle = document.createElement('option');
            city0pEle.innerText = cityDataList[i];
            city0pEle.setAttribute('value', cityDataList[i]);
            citySeEle.appendChild(city0pEle)

        }
    }         

jQuery类库

简介

​ 一个轻量级的,兼容多浏览器的javaScript库。它的宗旨就是写的更少做的更多。

优点

1. 加载速度快
2. 选择器更多更好用
3. 一行代码走天下
4. 支持ajax请求
5. 兼容性强

导入方法

​ jQuery.com官网先下载核心文件到本地引入,没有网络依然可以使用。

​ CDN网络资源加载,必须依靠网络使用。

www.bootcdn.cn
https://www.bootcdn.cn/jquery/
# 1.本地引用:
打开源码复制到pycharm的JS文件内
再用script标签引入
# 2.网页引用:
不用复制源码直接把网页复制过去引入

使用方法

jQuery导入之后需要使用关键字才可以使用默认的关键字就是jQuery
jQuery 简化了关键字  使用 $ 

js代码与jQuery代码对比
    let pEle = document.getElementsByTagName('p')[0]
    undefined
    pEle.style.color = 'red'
    'red'
    pEle.nextElementSibling.style.color = 'green'

    $('p').first().css('color','yellow').next().css('color','blue')

标签对象与jQuery对象

在我们日常使用中可能在标签对象与jQuery对象 交互使用,需要提前弄清楚手上的是什么对象

标签对象不能通过.css的方式修改样式,也不能.first 或者.next
但是 也可以通过两者转换实现
	"标签对象转jQuery对象"		
    	$(标签对象)
 	"jQuery对象转标签对象"
    	jQuery对象[0]
let pEle = document.getElementsByTagName('p')
$(pEle) # 如果有多个标签就+上索引位
posted @ 2022-12-06 20:02  李阿鸡  阅读(12)  评论(0编辑  收藏  举报
Title