首页 > 其他分享 >BOM、DOM、两者查找标签的方式和操作标签的方式、操作class和css的方法、事件、jQuery类库

BOM、DOM、两者查找标签的方式和操作标签的方式、操作class和css的方法、事件、jQuery类库

时间:2022-12-06 21:37:17浏览次数:35  
标签:类库 jQuery 浏览器 对象 标签 window navigator document

BOM操作

BOM概念

BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”
BOM对象:分为window对象和window子对象(screen对象,location对象,navigator对象,history对象)。

window对象

window对象是BOM顶层对象。

window对象是JS访问浏览器窗口的一个接口

window对象是一个全局对象,声明的所有的全局变量,全局方法函数最终都是window对象的属性或者方法。

一些常用的Window方法:

window.open() :打开一个新的浏览器窗口,接受四个参数(URL/打开方式/窗口参数/是否取代当前页面历史记录的布尔值)。

window.open('https://www.mzitu.com/','','height=800px,width=300px,top=500px,left=500px');  // 右侧
window.open('https://www.mzitu.com/','','height=201px,width=200px,top=250px,left=250px');  // 左侧

window.close() :关闭新打开的窗口(仅限open()打开的窗口)。

window.moveTo():移动当前窗口。

window.resizeTo():调整当前窗口的尺寸。

window.innerHeight - 浏览器窗口的内部高度

window.innerWidth - 浏览器窗口的内部宽度

window对象指代的就是浏览器窗口
window.innerHeight;  //  浏览器窗口的高度
150
window.innerWidth;  // 浏览器窗口的宽度
1536

页面

window.navigator.appCodeName; //浏览器代码名
window.navigator.appName; //浏览器步伐名
window.navigator.language; //浏览器当前语言
window.navigator.platform; //操作体系类型win32
window.navigator.plugins;
window.navigator.appVersion; //浏览器版本(包括 体系版本)
window.navigator.userAgent; //用户代理头的字符串表示
window.navigator.onLine; //用户否在线
window.navigator.cookieEnabled; //浏览器是否撑持cookie
window.navigator.mimeTypes;

history

window.navigator.appCodeName; //浏览器代码名
window.navigator.appName; //浏览器步伐名
window.navigator.language; //浏览器当前语言
window.navigator.platform; //操作体系类型win32
window.navigator.plugins;
window.navigator.appVersion; //浏览器版本(包括 体系版本)
window.navigator.userAgent; //用户代理头的字符串表示
window.navigator.onLine; //用户否在线
window.navigator.cookieEnabled; //浏览器是否撑持cookie
window.navigator.mimeTypes;
history

警告框

关键字: alert()

警告框

确认框

关键字:confirm()

确认框

提示框

关键字:prompt()

提示

计时器相关

通过使用 JavaScript,我们可以在一定时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。

setTimeout()

语法:

var t=setTimeout("JS语句",毫秒)

setTimeout() 方法会返回某个值。在上面的语句中,值被储存在名为 t 的变量中。假如你希望取消这个 setTimeout(),你可以使用这个变量名来指定它。

setTimeout() 的第一个参数是含有 JavaScript 语句的字符串。这个语句可能诸如 "alert('5 seconds!')",或者对函数的调用,诸如 alertMsg()"。

第二个参数指示从当前起多少毫秒后执行第一个参数(1000 毫秒等于一秒)。

clearTimeout()

语法:

clearTimeout(setTimeout_variable)

举个例子

// 在指定时间之后执行一次相应函数
var timer = setTimeout(function(){alert(123);}, 3000)
// 取消setTimeout设置
clearTimeout(timer);

setInterval()

setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。

setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。

语法:

setInterval("JS语句",时间间隔)

返回值

一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。

clearInterval()

clearInterval() 方法可取消由 setInterval() 设置的 timeout。

clearInterval() 方法的参数必须是由 setInterval() 返回的 ID 值。

语法:

clearInterval(setinterval返回的ID值)

举个例子:

// 每隔一段时间就执行一次相应函数
var timer = setInterval(function(){console.log(123);}, 3000)
// 取消setInterval设置
clearInterval(timer);

DOM操作

DOM:是当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
把文档中的代码翻译成一个对象模型
在这个模型中 所有相关的标签属性注释文本等等12种数据 都翻译为一种类型的对象 统称节点对象
这些对象之间在文档模型数据结构中存在某种关系: 根节点 父子节点 同胞节点等等
1.只有一个根节点document
2.除了根节点外所有节点都有唯一的一个父节点
3.document是window对象的属性
4.全局对象模型属于BOM操作 Browser Object Model 把浏览器对外提供的接口翻译为一个对象
BOM操作会在接下来的知识点讲到 它不属于标准的接口 但是浏览器厂商都提供了几乎一样的功能
5.元素的属性也是独立节点 叫属性节点 但是不是元素节点的子节点

查找标签

预备知识

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

查找标签的方式

获取HTML元素(三种方法)

1.根据id获取HTML元素

document.getElementById("id名")
document.getElementById('d1')
	结果就是标签对象本身

2.根据标签名获取HTML元素:

document.getElementsByTagName("标签名");
document.getElementsByClassName('c1')
	结果是数组里面含有多个标签对象 

3.根据类名获取HTML元素:

document.getElementsByClassName("类名");
document.getElementsByTagName('span')
	结果是数组里面含有多个标签对象

改变HTML

改变页面中HTML的内容

document.getElementById(id).innerHTML=新的 HTML

间接查找

parentElement             父节点标签元素
children                 所有子标签
firstElementChild        	第一个子标签元素
lastElementChild         	最后一个子标签元素
nextElementSibling       	下一个兄弟标签元素
previousElementSibling   	  上一个兄弟标签元素

操作节点

语法:

createElement(标签名)

示例:

var divEle = document.createElement("div");

添加节点

语法:

追加一个子节点(作为最后的子节点)

somenode.appendChild(newnode);

把增加的节点放到某个节点的前边。

somenode.insertBefore(newnode,某个节点);

示例:

var imgEle=document.createElement("img");
imgEle.setAttribute("src", "http://image11.m1905.cn/uploadfile/s2010/0205/20100205083613178.jpg");
var d1Ele = document.getElementById("d1");
d1Ele.appendChild(imgEle);

删除节点:

语法:

获得要删除的元素,通过父元素调用该方法删除。

somenode.removeChild(要删除的节点)

替换节点:

语法:

somenode.replaceChild(newnode, 某个节点);

属性节点

获取文本节点的值:

var divEle = document.getElementById("d1")
divEle.innerText
divEle.innerHTML

设置文本节点的值:

var divEle = document.getElementById("d1")
divEle.innerText="1"
divEle.innerHTML="<p>2</p>"

attribute操作

var divEle = document.getElementById("d1");
divEle.setAttribute("age","18")
divEle.getAttribute("age")
divEle.removeAttribute("age")

// 自带的属性还可以直接.属性名来获取和设置
imgEle.src
imgEle.src="..."

获取值操作

语法:

elementNode.value

适用于以下标签:

input

select

textarea

var iEle = document.getElementById("i1");
console.log(iEle.value);
var sEle = document.getElementById("s1");
console.log(sEle.value);
var tEle = document.getElementById("t1");
console.log(tEle.value);
1.针对用户输入的和用户选择的标签
	标签对象.value
2.针对用户上传的文件数据
	标签对象.files    	fileList  [文件对象、文件对象、文件对象]
	标签对象.files[0]	 文件对象

class与css操作

js操作标签css样式

标签对象.style.属性名(下划线没有 变成驼峰体)

js操作标签class属性

标签对象.classList.add()	添加类
标签对象.classList.contains()	存在返回true,否则返回false
标签对象.classList.remove()	删除指定类
标签对象.classList.toggle()	存在就删除,否则添加

指定css操作

obj.style.backgroundColor="red"

JS操作CSS属性的规律:

1.对于没有中横线的CSS属性一般直接使用style.属性名即可。如:

obj.style.margin
obj.style.width
obj.style.left
obj.style.position

2.对含有中横线的CSS属性,将中横线后面的第一个字母换成大写即可。如:

obj.style.marginTop
obj.style.borderLeftWidth
obj.style.zIndex
obj.style.fontFamily

事件

概念

HTML 4.0 的新特性之一是有能力使 HTML 事件触发浏览器中的动作(action),比如当用户点击某个 HTML 元素时启动一段 JavaScript。下面是一个属性列表,这些属性可插入 HTML 标签来定义事件动作。

事件可以简单的理解为通过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)
            }

            let inputEle = document.getElementById('d1');
            inputEle.onclick = function () {
                alert('谁在那里点我!!!')
            }
        </script>

事件函数中的this关键字

this指代的就是当前被操作的标签对象本身
如果事件函数内有多层嵌套那么最好在一开始用变量存储一下防止后续变化

onload方法

当我们给页面上的元素绑定事件的时候,必须等到文档加载完毕。因为我们无法给一个不存在的元素绑定事件。

window.onload事件在文件加载过程结束的时候触发。此时,文档中的所有对象都位于DOM中,并且所有图像,脚本,链接和子框架都已完成加载。

XXX.onload 等待XXX加载完毕之后再执行后面的代码

注意:.onload()函数存在覆盖现象。

事件实战案例

登录

<input type="text" value="游戏机" id="d1">

<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')
        // 2.给按钮标签绑定点击事件
        subEle.onclick = function (){
            // 3.查找获取用户输入的标签并获取数据
            let userNameEle = document.getElementById('d1')
            let passWordEle = document.getElementById('d2')
            if(userNameEle.value === 'jason'){
                userNameEle.nextElementSibling.innerText = '用户名不能是Jason'
            }
            if(passWordEle.value === '123'){
                passWordEle.nextElementSibling.innerText = '密码不能是123'
            }
        }
    </script>

select联动

省:
<select name="" id="d1">

</select>

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

</select>
<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.下载核心文件到本地引入(没有网络也可以使用)
    	<script src="jQuery3.6.js"></script>
 	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]
    undefined
    pEle.style.color = 'red'
    'red'
    pEle.nextElementSibling.style.color = 'green'

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

标签对象与jQuery对象

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

标签:类库,jQuery,浏览器,对象,标签,window,navigator,document
From: https://www.cnblogs.com/wwssadadbaba/p/16960603.html

相关文章

  • js、jQuery
    BOM操作BOM(BrowserObjectModel)是指浏览器对象模型,它使JavaScript有能力与浏览器进行“对话”window.open()window.open('https://www.sogo.com/','','width=800px,l......
  • BOM操作 DOM操作 操作标签
    今日内容总结BOM操作(BrowserObjetModel)BOM是指浏览器对象模型它使JavaScript有能力与浏览器进行'对话'1.window.open() 打开一个网页 window.open('网址',......
  • JS之BOM/DOM和jquery类库简介
    目录BOM操作DOM操作查找标签操作节点获取值操作class与css操作事件事件实战案例jQuery类库标签对象与jQuery对象BOM操作JavaScript分为ECMAScript,DOM,BOMBOM(BrowserObj......
  • 阻止vue组件vuedraggable在使用时打开浏览器新标签
    前言浏览器在文字拖动时会打开链接,图片拖动时打开新窗口,这是浏览器的特性。vue-draggable组件就是需要拖动的,就与这个特性契合了,但大多时候在项目中我们不需要这个特性。......
  • 前端第五课---BOM操作与DOM操作与jQuery类库简介
    昨日内容回顾JavaScript简介1.发展史2.编程语言3.注释语法 4.引入方式 变量与常量var\let\const基本数据类型数值类型 Number字符类型 String布尔......
  • 直播平台制作,Flutter ChoiceChip 用来实现选择标签效果
    直播平台制作,FlutterChoiceChip用来实现选择标签效果核心使用代码如下 class_ChoiceClipHomeStateextendsState<ChoiceClipHome>{ ///当前选中的索引 int?_......
  • Image Upload based on jQuery
    今天把自己写的一个简单的jQuery上传插件放到了Git@OSC上了,希望能帮助需要的人,并且得到高人的指点,一起用心的维护下去)插件很简单,目前只提供图片的上传功能,包括预览,进度条显......
  • jquery ui-datapicker格式小结
    在jquerydataui-picker中,支持不同的格式,就是当用户选择了日历上的日期后,显示用户所选的日期格式,例子如下:<linkrel="Stylesheet"type="text/css"......
  • Android高仿网易新闻客户端之动态添加标签
    承接上一篇文章:​​Android高仿网易新闻客户端之首页​​,今天来实现动态添加标签效果。动态标签页是一个流式布局,实现了宽度自动换行高度自动分配的功能,代码如下:FlowLayout.......
  • day32-JQuery05
    jQuery059.作业9.1homework01对多选框进行操作,输出选中的多选框的个数,并且把选中爱好的名称显示。<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-......