您的位置:首页 > 汽车 > 时评 > 【17.0】JavaScript--DOM和BOM

【17.0】JavaScript--DOM和BOM

2024/7/6 18:53:47 来源:https://blog.csdn.net/2401_83569627/article/details/139753268  浏览:    关键词:【17.0】JavaScript--DOM和BOM

【17.0】JavaScript–DOM和BOM

【一】DOM/BOM介绍

【DOM】
  • 文件对象模型
  • 在dom中,每个html元素,属性,文本点都被视为一个对象,我们可以创建/查询/修改和删除这些对象
【BOM】
  • 浏览器对象模型
  • 浏览器对象模型式浏览器提供的API集合,注意运用在处理于计算机环境相关的任务,如窗口管理、导航、cookie、location等
【小结】
  • 他们都是javascript开发中不可或缺的部分,分别负责对网页内容和浏览器环境进行深层次的操作,使得前端开发者能够实现丰富的交互功能和动态效果

【二】Window对象

【概念】

  • 表示浏览器窗口的全局对象,它提供了一些方法来操控和管理窗口

【方法】

(1)window.open()
  • 【用处】放入网页地址,打开新的窗口或者对一个已经存在的窗口的引用

  • 【参数】参数1:放网页地址 参数2:可以为空(有self等) 参数3:窗口大小

  • 【实例】

    let newWindow = window.open("https://www.example.com", "_blank");
    let newWindow = window.open("https://pic.netbian.com/", "_blank",'height=400px,width=400px');
    
(2)window.close( )
  • 关闭当前窗口

    window.close();
    
(3)setTimeout( )
  • 【用处】指定时间延迟后再执行后续的代码

  • 【参数】放入需要执行的代码,和时间

    setTimeout(function(){// 执行代码
    }, 100); // 1秒后执行
    
(4)setInterval ()
  • 【用处】固定的时间间隔重复执行指定的函数或代码

  • 【参数】执行的代码 时间

    setInterval(function(){// 执行代码
    }, 200); // 每2秒执行一次
    
(5)window.alert( )
  • 【用处】显示一个带有指定消息和一个确认按钮的警告框

  • 【参数】写入弹窗要弹出的内容

    window.alert('hello world');
    
(6)window.confirm()
  • 【用处】显示一个带有指定消息和两个按钮(确认和取消)的对话框

  • 【参数】可以写上弹窗信息,底部会自带确认和取消

  • 【实例】

    if(window.confirm("Are you sure?")){//点击确认按钮执行的代码
    }else{//点击确认按钮执行的代码
    }
    
    if(window.confirm("Are you sure?")){//点击确认按钮执行的代码window.alert('hello world');
    }else{//点击确认按钮执行的代码window.alert('bye world');
    }
    
(7)window.prompt( )
  • 【用处】显示一个带有指定消息和一个文本输入框的对话框

  • 【参数】写入输入信息的提示信息,会自带有一个输出框

  • 【实例】

    var name= window.prompt('请输入您的姓名');
    
(8)window.innerHeight属性
  • 【用处】得到浏览器窗户的内部高度(即视口的高度),单位是像素,不包括浏览器的工具栏/滚动条等元素

  • 【实例】

    let windowHeight = window.innerHeight;
    console.log(windowHeight); // 输出当前窗口的视口高度
    
    //打开半个窗口 197
    //全部打开 274
    单位式像素
    
(9)window.innerWidth属性
  • 【用处】返回浏览器窗口的内部宽度(即视口的宽度),以像素为单位,不包括浏览器的工具栏、滚动条等元素

  • 【实例】

    let windowWidth = window.innerWidth;
    console.log(windowWidth); // 输出当前窗口的视口宽度
    
  • 【小结】我们可以根据返回值再去调整我们的页面布局

(10)监听resize事件
  • 【意义】使用监听搭配着上面两个属性,对我们的窗口大小改变进行监听,从而有利于我们调整页面

  • 【实例】

    window.addEventListener("resize", function() {let windowHeight = window.innerHeight;let windowWidth = window.innerWidth;console.log("Window Height:", windowHeight);console.log("Window Width:", windowWidth);
    });
    
    Window Height: 194
    VM95:5 Window Width: 516
    VM119:4 Window Height: 194
    VM119:5 Window Width: 516
    VM95:4 Window Height: 194
    VM95:5 Window Width: 523
    VM119:4 Window Height: 194
    VM119:5 Window Width: 523
    //会自动报数
    
(11)window.opener
  • 【用处】当前窗口打开另一个窗口对象,它是window对象的一个属性,用于在当前窗口引用到打开它的父窗口或者来源窗口

  • 【使用场景1】配合window.open( )

    • 直接在现在父窗口跳到链接的子窗口

      let popup = window.open("popup.html"); // 打开一个弹出窗口
      
    • 输出父窗口对象,就是将最原来的窗口一些信息打出来

      let parentWindow = window.opener;
      console.log(parentWindow); // 输出父窗口对象
      
  • 【使用场景2】

    • postMessage() 方法

    • 当前窗口是通过其他窗口向其发消息(使用postMessage() 方法)时,可以使用envent.source属性来获取信息来源窗口,并用window.open来引用该来源窗口

      let currentWindow = window.open("current.html"); 
      // 打开当前窗口
      // 向当前窗口发送消息
      currentWindow.postMessage("Hello", "http://example.com");
      

      然后在当前窗口current.html中的js代码中,通过message事件来接收来自来源窗口的消息,并使用 event.source 和 window.opener 引用到来源窗口:

      window.addEventListener("message", function(event) {let message = event.data;let sourceWindow = event.source;let openerWindow = window.opener;console.log("Message:", message);console.log("Source Window:", sourceWindow);console.log("Opener Window:", openerWindow);
      });
      

【三】window子对象

  • 如果是window子对象,window可以不写

【1】window.document

  • 【概念】此子对象表示当前窗口中的文档对象

  • 【用法】可以使用使用其下的各种方法来获得关于当前页面的html结构,样式dom元素等

  • 【实例】

    • //获取标题
      let pageTitle = window.document.title;
      console.log(pageTitle);
      

【2】window.location

  • 【概念】此子对象包含当前页面url信息,提供了一些页面导航相关的方法
  • 【用法】可以获得当前页面的url,查询字符串参数,路径等信息,并且可以使用一些方法来导航到其他页面
(1)window.location.href*
  • 【实例1】用herf属性打开一个url

    window.location.href = 'https://example.com';
    //直接而在当前页面跳转到新网页
    
  • 【实例2】获取当前页面的完整url(包括协议,域名,路径等)

    let currentURL = window.location.href;
    console.log(currentURL);window.href = url // 跳转到目标地址
    
(2)window.location.protocol
  • 【用法】获取当前页面的协议部分(例如 ‘http:’ 或 ‘https:’)

  • 【实例】

    let protocol = window.location.protocol;
    console.log(protocol);
    
(3)window.location.host
  • 【用法】获取当前页面的主机(域名和端口号)部分

  • 【实例】

    let host = window.location.host;
    console.log(host);
    
(4)window.location.hostname
  • 【用法】获取当前页面的主机名部分

  • 【实例】

    let hostname = window.location.hostname;
    console.log(hostname);
    
(5)window.location.port
  • 【用法】获取当前页面的主机名部分

  • 【实例】

    let port = window.location.port;
    console.log(port);
    //63342
    
(6)window.location.pathname
  • 【用法】获取当前页面的路径部分

  • 【实例】

    let pathname = window.location.pathname;
    console.log(pathname);
    
    http://localhost:63342/%E6%B5%8B%E8%AF%95/%E4%BD%9C%E4%B8%9A.html?_ijt=fac20vtad47o5sd480ep3pblcq&_ij_reload=RELOAD_ON_SAVE
    //?_ijt=fac20vtad47o5sd480ep3pblcq&_ij_reload=RELOAD_ON_SAVE
    
(7)window.location.search
  • 【用法】获取当前页面的查询参数部分(即 URL 中问号后面的内容)

  • 【实例】

    let searchParams = window.location.search;
    console.log(searchParams);
    
(8)window.location.hash
  • 【用法】获取当前页面的片段标识部分(即 URL 中井号后面的内容)

  • 【实例】

    let hash = window.location.hash;
    console.log(hash);
    
(9)window.location.assign()
  • 【用法】将当前页面重定向到指定的 URL

  • 【实例】

    let hash = window.location.hash;
    console.log(hash);
    
(10)window.location.reload()*
  • 【用法】重新加载当前页面

  • 【实例】

    // 重新加载当前页面
    window.location.reload();
    

【3】window.history

  • 【概念】对浏览器的历史记录精选的操作
(1)window.history.length
  • 【意义】得到当前浏览器有多少条浏览记录

  • 【实例】

    let historyLength = window.history.length;
    console.log(historyLength);
    
(2)window.history.back()*
  • 【意义】返回当上一个记录,就是回退按钮

  • 【示例】

    window.history.back();
    
(3)window.history.forward()*
  • 【意义】返回当下一个记录,就是前进按钮

  • 【示例】

    window.history.forward();
    
(4)window.history.go()
  • 【意义】传入数字,正数表示前进几个页面,负数表示后退几个页面

  • 【示例】

    // 后退两个历史记录
    window.history.go(-2);// 前进一个历史记录
    window.history.go(1);// 重新加载当前页
    window.history.go();
    
(5)window.history.pushState()
  • 【意义】向浏览器历史记录中添加新的状态,并且不会触发页面的重新加载。它接受三个参数:state、title 和 URL

  • 【示例】

    // 添加新的历史记录状态
    window.history.pushState({ page: 1 }, "Page 1", "/page1.html");
    
(6)window.history.replaceState()
  • 【意义】替换当前的历史记录状态,不会触发页面的重新加载。它接受三个参数:state、title 和 URL

  • 【示例】

    // 替换当前历史记录状态
    window.history.replaceState({ page: 2 }, "Page 2", "/page2.html");
    

【4】window.navigator

  • 【概念】可以通过这个属性查找设备相关的信息
(1)window.navigator.userAgent*
  • 【意义】返回浏览器的用户代理字符串,该字符串包含了有关浏览器厂商、版本号以及操作系统等信息

  • 【用处】可以用来校验反爬程序

  • 【示例】

    let userAgent = window.navigator.userAgent;
    console.log(userAgent);
    
(2)window.navigator.platform*
  • 【意义】返回操作系统平台,如 “Win32”、“MacIntel” 等。

  • 【示例】

    let platform = window.navigator.platform;
    console.log(platform);
    
(3)window.navigator.vendor
  • 【意义】返回浏览器的厂商或供应商名称

  • 【示例】

    let vendor = window.navigator.vendor;
    console.log(vendor);
    
(4)window.navigator.language
  • 【意义】返回浏览器的首选语言,通常是用户操作系统的默认语言。

  • 【示例】

    let language = window.navigator.language;
    console.log(language);
    
(5)window.navigator.cookieEnabled
  • 【意义】返回一个布尔值,表示浏览器是否启用了 cookie

  • 【示例】

    let cookieEnabled = window.navigator.cookieEnabled;
    console.log(cookieEnabled);
    
(6)window.navigator.plugins
  • 【意义返回一个包含浏览器插件列表的 PluginArray 对象。

  • 【示例】

    let plugins = window.navigator.plugins;
    console.log(plugins);
    

【四】弹出框

  • 【概念】在网页开发中常用的交互软件,用于显示警告、确认或提示信息,并与用户进行互动
  • 【类型】常见的有警告框(alert )、确认框(confirm)、提示框(prompt)
(1)警告框
  • 【概念】用于向用户显示一条重要的警告消息,通常包含一个确定按钮用于关闭弹出框

  • 【示例】

    alert('这是一个警告框');
    
(2)确认框
  • 【概念】弹出框,含有弹出内容和按钮(确认和取消)

  • 【示例】

    //括号里写弹出语句
    //if else语句中进行确认和取消操作if (confirm('您确定要删除吗?')){//确认按钮执行操作console.log('您已点击确认');
    }else{//取消按钮执行的代码console.log('您已点击取消');
    }
    
(3)提示框
  • 【概念】提示用户输入一条信息,并有确认和取消按钮

  • 【示例】

    prompt('请输入您的姓名:','默认值');
    

【五】计时器相关

  • 【概念】设置定时器,可以定时触发某一个操作,一秒是1000
  • 【位置】可以放在body内,也可以放在head内

【1】一定时间后触发(setTimeout)

  • 【概念】类似于一个定时器,延迟几秒后执行该代码

  • 【示例】

    • 直接搭配无名函数

      setTimeout( function(){//延迟后的操作,我写了警告案例,时间设成3salert('这是一个警告框');
      },3000 )
      
    • 和有名函数搭配

      var fun=function(){//延迟后的操作,我写了警告案例,时间设成3salert('这是一个警告框')}setTimeout( fun,3000 )
      

【2】每隔一段时间就触发setInterval

  • 【概念】每隔固定时间出发相同操作,没有停止操作,不会停止,慎用

  • 【示例】

    • 无名函数

      setInterval( function(){//延迟后的操作,我写了警告案例,时间设成3salert('这是一个警告框');
      },3000 )
      
    • 有名函数(最好用有名哪个,无名的没名字不好关闭)

      var fun=function(){//延迟后的操作,我写了警告案例,时间设成3salert('这是一个警告框')}setInterval( fun,3000 )
      

【3】清除定时器

  • 【概念】

    • clearTimeout:用于清理setTimeout定时器
    • clearInterval:取消使用setInterval定时器
  • 【示例】

    • clearTimeout(定时器函数名)
      
    • 套娃式

      //每隔三秒触发一次,9s后触发关闭定时器
      function func2() {alert("123")}function show() {let t = setInterval(func2, 3000); // 每隔3s触发一次function inner() {clearInterval(t) // 清除定时器}setTimeout(inner, 9000) // 9s后触发}show()
      

【六】浏览器html中标签操作

  • 【概念】我们想获取有关界面标签的一些信息,需要使用document的一些属性方法

【1】getElement

  • 【概念】通过不同的方式拿元素
(1)getElementByld通过id拿
  • 【概念】我们输入id属性名,得到这个id下的内容

  • 【示例】

    //我定义了一个块级标签,里面放了username的一些信息
    var element = document.getElementById("username");
    console.log(element);
    
    //得到该id标签下的内容
    <div id="username"><h2>zhouxiaoqi</h2>
    </div>
    
(2)getElementByClassName通过类名拿
  • 【概念】我们输入id属性名,得到这个id下的内容

  • 【示例】

    var elements = document.getElementsByClassName("myClass");
    //拿到这个类下的一些信息
    
(3)getElementTagName 通过标签名拿元素
  • 【概念】通过div、p等标签拿元素

  • 【示例】

    //根据块级标签拿
    var elements = document.getElementsByTagName("div");
    //拿到的带有索引,类似于每个块级标签的简介
    
(4)小结
  • 当我们在用变量名指代标签对象时,一般都建议写成
xxxEle
​	divEle
​	aEle
​	pEle
  • 这些方法可以根据不同的需求和条件进行标签查找。

    • 使用getElementById适合于查找单个具有唯一ID的元素
    • getElementsByTagName和getElementsByClassName适合于查找多个相同标签名称或类名的元素。
  • 需要注意的是,以上方法返回的是一个HTML元素或HTML元素列表(NodeList)

【2】半间接查找标签query(选择器相关标签)

  • 【介绍】是通过选择器去查找界面的元素
(1)querySelector
  • 【概念】我们有很多标签,在选择器里可以对标签进行一些里的设置,给他增加颜色等等,现在我们通过选择器去查找元素相关内容

  • 【返回值】返回的是第一个匹配选择器的元素

  • 【示例】

    // 使用querySelector查询单个元素
    var element = document.querySelector(".myClass");
    
(2)querySelectorAll
  • 【概念】返回所有匹配选择器的元素列表

    // 使用querySelectorAll查询多个元素
    var elements = document.querySelectorAll("div");
    
(3)小结
  • 选择器可以是标签名称、类名、ID、属性等,更复杂的选择器甚至可以选择嵌套结构
  • 通过选择器查询,您可以更灵活地查找和操作HTML元素

【3】间接查找标签

  • 【介绍】父子兄弟这种关系,去找同级或者上下级的元素
  • 【类比】和py中的类相似,例如块级标签有很多行,div标签就是p的父标签
(1)parentElement:
  • 【介绍】属性返回指定元素的父元素
(2)children
  • 【介绍】返回指定元素的所有子元素组成的集合,再通过索引可以对子元素进行访问和操作
  • 【注意点】这个集合中不包括文本节点和其他非元素节点
(3)firstElementChild
  • 【介绍】firstElementChild属性指向指定元素的第一个子元素
  • 【注意点】值返回第一个子元素,也是会忽略在它之前存在的任何非元素节点
(4)lastElementChild
  • 【介绍】lastElementChild属性指向指定元素的最后一个子元素
  • 【注意点】值返回最后一个子元素,也是会忽略在它之后存在的任何非元素节点
(5)nextElementSibling
  • 【介绍】属性返回紧跟在指定元素后面的下一个兄弟元素
(6)previousElementSibling
  • 【介绍】返回在指定元素之前出现的前一个兄弟元素

【用法】

  • // 注意是否需要索引取值
    let pEle = document.getElementsByClassName("p1")[0];
    // undefinedpEle
    // <p class="p1">…</p>// (1)查找父标签
    pEle.parentElement
    // <div id="d1">…</div>
    pEle.parentElement.parentElement
    // <body>…</body>
    pEle.parentElement.parentElement.parentElement
    /* <html lang="en"><head>…</head><body>…</body></html> */
    pEle.parentElement.parentElement.parentElement.parentElement
    // null
    

【七】节点操作

  • 【概念】节点就是js中的内容,像标签是节点,元素也是节点,下面的主要是对元素节点进行操作

【1】创建节点

(1)createElement(tagName)
  • 【介绍】创建一个标签名名节点,节点名可以是div,p等(类似word文档中,插入段或行等)

  • 【示例】

    
    
(2)createTextNode(text)
  • 【介绍】创建一个包含文本内容的文本节点(类似word文档中,插入一块文本内容)

  • 【示例】

    
    
(3)createDocumentFragment()
  • 【介绍】创建一个空的文档片段节点,可用于高效地插入多个节点(类似于word文档中插入空文本)
  • 【示例】

【2】获取节点

(1)getElementById(id)
  • 【介绍】根据元素的id属性获取对应的元素节点
(2)getElementsByTagName(tagName)
  • 【介绍】根据元素的标签名获取一组元素节点
(3)getElementsByClassName(className)
  • 【介绍】根据元素的类名获取一组元素节点
(4)querySelector(selector)
  • 【介绍】使用CSS选择器获取匹配的第一个元素节点
(5)querySelectorAll(selector)
  • 【介绍】使用CSS选择器获取匹配的所有元素节点

【3】修改节点

(1)node.appendChild(childNode)

  • 【介绍】将一个节点作为父节点的最后一个子节点添加到指定节点
  • 【示例】

(2)parent.removeChild(childNode)

  • 【介绍】从父节点中移除指定子节点
  • 【示例】

(3)node.replaceChild(newNode, oldNode):

  • 【介绍】使用新节点替换旧节点
  • 【示例】

(4)node.insertBefore(newNode, referenceNode)

  • 【介绍】在参考节点之前插入新节点
【4】属性操作

(1)element.getAttribute(attribute):

  • 【介绍】 获取指定属性的值。
  • 【示例】

(2)element.setAttribute(attribute, value):

  • 【介绍】 设置指定属性的值。
  • 【示例】

(3)element.removeAttribute(attribute):

  • 【介绍】 移除指定属性。
  • 【示例】

【5】文本操作

(1)node.textContent:

  • 【介绍】获取或设置节点的文本内容
  • 【示例】

(2)node.innerHTML: 获取或设置节点的HTML内容

  • 【介绍】获取或设置节点的HTML内容
  • 【示例】

【八】获取值操作

【1】获取属性值

  • 【方法】getAttribute()方法来获取HTML元素的属性值

  • 【用法】传入属性名得到属性值(标签.getAttribute(属性名))

    // 示例:获取id为myElement的元素的src属性值
    var element = document.getElementById("myElement");
    var srcValue = element.getAttribute("src");
    console.log(srcValue);
    

【2】获取文本内容

  • 【innerText】返回纯文本内容

  • 【innerHTML】返回元素的html内容

  • 【textContent】返回元素及其子元素的文本内容,包括隐藏元素和注释等

  • 【示例】

    //获得id为myelement的div,元素的文本内容
    var element = document.getElementById("myElement");
    var textContent = element.textContent;
    console.log(textContent);
    

【3】获得用户的输入值

  • 【方法】类似于字典取值,将用户输入的内容放到字典里,.value属性取值

  • 【示例】

    // 示例:获取id为myInput的input元素的值
    var input = document.getElementById("myInput");
    var inputValue = input.value;
    console.log(inputValue);
    

【4】获取文件信息

  • 【介绍】用户可以选择文件,上传文件,我们将用户处理的文件存放起来,然后拿到这个文件信息

  • 【方法】利用 .files属性

    • 返回一个FileList文件夹,遍历拿到文件的信息
  • 【示例】

    • 搭配监听事件,当有改变的时候,可以及时对改变进行处理,拿到很完整的文件
    // 获取文件选择框的DOM元素
    var fileInput = document.getElementById("fileInput");// 添加change事件监听器,以便在用户选择文件后执行操作
    fileInput.addEventListener("change", function() {// 获取选择的所有文件var files = fileInput.files;// 遍历文件列表,并处理每个文件for (var i = ; i < files.length; i++) {var file = files[i];console.log("文件名:" + file.name);console.log("文件类型:" + file.type);console.log("文件大小(字节):" + file.size);console.log("最后修改时间:" + file.lastModified);}
    });
    

【九】属性操作

  • 【介绍】在html界面中,属性有类属性,id属性等等(其实就是给一些元素起名字,这些元素是一块抽象的内容,都具有自己的细节)
【1】class属性操作
  • 【介绍】

    • 通过类进行操作
    • .classList() 是JavaScript中用于获取HTML元素的类名列表的方法,返回一个DOMTokenList对象,该对象包含了元素的所有类名
    • 拿到类名,可以对某个类名进行add、remove等操作(此时名字就像列表的一个元素)
  • 【注意点】

    • classlist只读,不能直接赋值,是一个动态的表(具有实时性),可以通过遍历访问每个类名
    • classList方法在大多数现代浏览器中都得到了支持,如果需要兼容旧版浏览器,可以考虑使用polyfill库来模拟classList功能
  • 【示例】

    var element = document.getElementById("myElement");
    var classList = element.classList;// 检查是否包含某个类名
    if (classList.contains("myClass")) {console.log("myElement包含myClass类名");
    }// 添加类名
    classList.add("newClass");// 移除类名
    classList.remove("oldClass");// 切换类名(如果存在则移除,否则添加)
    classList.toggle("active");
    

【2】样式标签

  • 【介绍】得到标签下的属性,这些属性是对这个标签的一个样式相关,比如背景颜色等

  • 【示例】

    • html界面

      <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><title>Title</title><style>.d1 {height: 400px;width: 400px;border-radius: 50%;}.bg_red {background-color: red;}.bg_green {background-color: green;}</style>
      </head>
      <body>
      <div id="d1" class="d1 bg_green bg_red"></div>
      </body>
      </html>
      
    • 类属性操作

      let divEle = document.getElementById("d1");
      // undefined// (1) 查看当前类标签下的所有属性
      divEle.classList
      /* DOMTokenList(3) ['d1', 'bg_green', 'bg_red', value: 'd1 bg_green bg_red'] */ // 移除当前类标签下的某个属性
      divEle.classList.remove("bg_green")
      // undefined// 添加当前类标签下的某个属性
      divEle.classList.add("bg_green")
      // undefined// 校验当前标签下是否包含某个属性
      divEle.classList.contains("d1")
      true
      divEle.classList.contains("d2")
      false// 当前标签下有这个属性则移除,没有这个属性则添加
      divEle.classList.toggle("bg_red");
      // false
      divEle.classList.toggle("bg_red");
      // true
      
    • 标签样式

      let pEle = document.getElementsByTagName("p")[0]
      // undefined// 修改标签样式中的颜色
      pEle.style.color = "red";
      // 'red'// 修改标签样式中的字体大小
      pEle.style.fontSize = "28px"
      // '28px'// 修改标签样式中的背景颜色
      pEle.style.backgroundColor = "green"
      // 'green'
      

【十】事件

  • 【介绍】事件就是在程序运行期间发生的一些特定操作或者状态变化(就是发生事情了),可以触碰到不同的事物发生不同的事情

  • 【用法】

    //可以提前定义某个函数,然后用触发事件的方法,将函数放进去,触发后就可以执行
    //先拿到标签,当id为"myButton"的按钮被点击时,会触发点击事件,并弹出一个提示框。
    //类似我id写username,只有点击username才会触动
    var button = document.getElementById("myButton");button.addEventListener("click", function(event) {alert("按钮被点击了!");
    });
    

【1】鼠标–触发的事件

  • click:鼠标点击事件。
  • mouseover:鼠标悬停在元素上的事件。
  • mouseout:鼠标离开元素的事件。
  • mousedown:鼠标按下事件。
  • mouseup:鼠标松开事件。
  • mousemove:鼠标移动事件。

【2】键盘–触发的事件

  • keydown:键盘按下事件。
  • keyup:键盘松开事件。
  • keypress:键盘按键被按下并松开事件。
【3】表单事件:
  • submit:表单提交事件。
  • change:表单值改变事件。
  • focus:表单元素获取焦点事件。
  • blur:表单元素失去焦点事件。
【4】文档加载事件:
  • load:页面完全加载完成事件。
  • unload:页面关闭或离开事件。
【5】定时器事件
  • setTimeout:在指定的延迟时间后触发事件。
  • setInterval:每隔一定时间触发事件。
【6】自定义事件:
  • 开发者可以根据需要创建自定义事件,并使用dispatchEvent来触发事件。

【十一】绑定事件的方式

  • 【介绍】上面介绍了有哪些操作可以触发事件,现在我们将这个出发操作绑定到某个事物身上

【1】传统的事件属性绑定

  • 【方法】直接在标签里给这个事物,添加时间属性

  • 【示例】

    • 例如在按钮的onclick属性指定一个代码,当点击的时候就会触发

    • <button onclick="myFunction()">点击我</button><script>function myFunction() {alert("按钮被点击了!");}
      </script>
      

【2】现代的事件监听绑定

  • 【方法】对某些元素都有自己的id或者class类,我们通过选择id或class来帮顶

  • 【用法】

    • 先选择内容
    • 给这个内容增加一个属性,属性里面有我们触发事件的代码,出发后就运行这个代码
  • 【优点】可以更灵活地添加、移除或修改事件监听器,同时也可以实现多个事件监听器同时响应一个事件的目的

  • 【示例】

    <button id="myButton">点击我</button><script>var button = document.getElementById("myButton");button.addEventListener("click", function() {alert("按钮被点击了!");});
    </script>
    
    • 在上述示例中,通过getElementById方法获取id为"myButton"的按钮元素,然后使用addEventListener方法绑定了一个点击事件监听器。

      • 当按钮被点击时,会执行回调函数,并弹出一个提示框

【小结】

  • 无论选择哪种事件绑定方式,都应根据具体情况来确定使用哪种方法。
  • 传统的事件属性绑定简单易用,适合简单的事件绑定场景;
  • 现代的事件监听绑定更加灵活和可控,适用于复杂的交互需求。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com