JavaScript中BOM与DOM

news2024/12/1 0:36:20

BOM

window对象

所有的浏览器都支持window对象,他表示浏览器窗口,

所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

全局变量是 window 对象的属性。全局函数是 window 对象的方法。

接下来要讲的HTML DOM 的 document 也是 window 对象的属性之一。

一些常用的Window方法:

  • window.innerHeight - 浏览器窗口的内部高度
  • window.innerWidth - 浏览器窗口的内部宽度
  • window.open() - 打开新窗口
  • window.close() - 关闭当前窗口

弹出框

可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。

警告框:alert

确认框:confirm

提示框:prompt

alert(123)//警告框
confirm(222)//确认框
prompt()//提示框

计时相关

setTimeout()计时器,等待几秒后运行

clearTimeout()清楚计时器

setInterval()每个三秒执行一次

clearInterval()清除效果

function f1(){
    console.log("11111")
}
// setTimeout(f1,2000)//等待几秒后执行f1,相对于计时器,第一个写执行的函数,第二个写时间以毫秒为单位1000=1s
// clearTimeout(f1)//清除计时器

var aa = setInterval(f1,3000)//没隔三秒执行一次
clearInterval(aa)//清除效果

例:使func2执行三次后关闭


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


 

DOM

HTML DOM树:

DOM(Document Object Model)是一套对文档的内容进行抽象和概念化的方法。

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。

HTML DOM 模型被构造为对象的树

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

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

JavaScript 可以通过DOM创建动态的 HTML:

  • JavaScript 能够改变页面中的所有 HTML 元素
  • JavaScript 能够改变页面中的所有 HTML 属性
  • JavaScript 能够改变页面中的所有 CSS 样式
  • JavaScript 能够对页面中的所有事件做出反应

查找标签

        直接查找

                id查找,class查找,标签查找

        查id document.getElementByID('id')

  

var div = document.getElementById('d1')
    console.log(div)//使用id查找
    var c1 = document.getElementsByClassName("c1")[0];//使用索引查找
    var c2 = document.getElementsByClassName("c1")[1];
    var c3 = document.getElementsByClassName("c1")[2];
    console.log(c1)
    console.log(c2)
    console.log(c3)

    var div1=document.getElementsByTagName('div')//使用class查找
    var div2=document.getElementsByTagName('div')
    var div3=document.getElementsByTagName('div')
    console.log(div1)
    console.log(div2)
    console.log(div3)

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

1. parentElement 父节点 标签查找

var d = document.getElementsByClassName('a1')[0]
var a = d.parentElement.parentElement
console.log(a)

2.children所有子标签

var div =document.getElementById('d1')
var children =div.children
console.log(children)

3. firstElementChild 第一个子标签元素

var div =document.getElementById('d1')
var children =div.firstChild
console.log(children)//标签下第一个子标签

4.lastElementChild 最后一个子标签元素

var div =document.getElementById('d1')
var children =div.lastChild
console.log(children)//标签下第最后一个子标签

5. nextElementSibling 下一个兄弟标签


var div =document.getElementById('d1')
var children =div.nextElementSibling
console.log(children)//下一个兄弟标签

6. previousELementsibling 上一个兄弟标签

var div =document.getElementById('d1')
var children =div.nextElementSibling
console.log(children)//上一个兄弟标签
节点操作

动态创建标签元素

  var img=document.createElement('img');
  //先查找
  var div=document.getElementById('d1');
  //增加属性
  img.src='img.png';
  //放入图片
  div.appendChild(img)
  console.log(img);

使用点语法是不能增加自定义属性的,如果要添加自定义属性则使用

例:动态创建a标签:

 var a = document.createElement('a');
 var div = document.getElementById('d1');
 div.appendChild(a)
 a.href="http://www.baidu.com";
 a.title="点我点我"
 a.innerText='来了利用'
  console.log(a)

获取值操作

语法:

elementNode.value

适用于以下标签:

  • .input
  • .select
  • .textarea
  • value不能获取文件数据,获取文件数据要用files
<input type="text" id="in" value="kk">;
<select name="" id="s1">
  <option value="1">上海</option>
  <option value="2" selected>北京</option>
  <option value="3">安徽</option>

</select>
<textarea name="" id="text" cols="30" rows="10">这是一个框</textarea>
</body>
<script>
  var inp = document.getElementById('in')
  console.log(inp.value);
  var city = document.getElementById('s1')
  console.log(city.value)
  var text = document.getElementById('s1')
  console.log(text.value)

class操作

className  获取所有样式类名(字符串)

classList.remove(cls)  删除指定类


classList.add(cls)  添加类


classList.contains(cls)  存在返回true,否则返回false


classList.toggle(cls)  存在就删除,否则添加

 var div = document.getElementById('d1')
  //增加class属性
  div.classList.add('c1')
  div.classList.add('c2')
  //删除class属性
  div.classList.remove('c2');
  //判断是否存在
  div.classList.contains('c1')
  //存在删除,不存在添加
  div.classList.toggle('c1')

设置边框
  div.style.color='red';
  div.style.fontSize='30px';
  div.style.fontWeight='bolder';
  div.style.border='3px solid black';

事件

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

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               // 练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。
onload         一张页面或一幅图像完成加载。
onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。

onselect      在文本框中的文本被选中时发生。
onsubmit      确认按钮被点击,使用的对象是form。

绑定方式:

 //第一种
  function changeColor(){
    alert('changeColor');

  }//第二种
  document.getElementById('d1').onclick=function (){
    alert('找到')
  }

当第二种代码在下面时,找不到id值,导致无法成功执行,所以如果想要成功加载则使用

window.οnlοad=funcing f(){}即可

}//第二种
  window.onload=function (){
     document.getElementById('d1').onclick=function (){
    alert('找到')
  }

  }

this 指向的当前对象,及传参的使用

  var bot =document.getElementById('d1');
    document.getElementById('d1').onclick=function (){
      this.innerText='看看你的'

 var bot =document.getElementById('d1');
   function changeColor(_this,a,b, c){
     console.log(_this.innerText)
     console.log(bot.innerText)
     console.log(a)
     console.log(b)
     console.log(c)

  }

示例:开关灯

<!DOCTYPE html>
  <html lang="en">
  <head>
  <meta charset="UTF-8">
  <title>Title</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <style>
  .c1 {
  height: 400px;
  width: 400px;
  border-radius: 50%;
}
.bg_green {
  background-color: greenyellow;
}
.bg_red {
  background-color: red;
}
</style>
  </head>
  <body>
  <div id="d1" class="c1 bg_red bg_green"></div>
  <button id="d2">变色</button>

  <script>
  let btnEle = document.getElementById('d2')
let divEle = document.getElementById('d1')
btnEle.onclick = function () {  // 绑定点击事件
  // 动态的修改div标签的类属性
  divEle.classList.toggle('bg_red')
}
  </script>
  </body>
  </html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

遥遥领先,免费开源的django4-vue3前后端分离项目

星域后台管理系统前端介绍 &#x1f33f;项目简介 本项目前端基于当下流行且常用的vue3作为主要技术栈进行开发&#xff0c;融合了typescript和element-plus-ui&#xff0c;提供暗黑模式和白昼模式两种主题以及全屏切换&#xff0c;开发bug少&#xff0c;简单易学&#xff0c…

攻略合集!游戏要领你一定要知道!

大家好&#xff01;作为游戏玩家&#xff0c;我们都希望在游戏中能够成为顶尖的高手。为了帮助大家更好地掌握游戏的要领&#xff0c;我要分享一些实用的攻略和技巧。 首先&#xff0c;不同游戏有不同的技巧和要领。对于《绝地求生》来说&#xff0c;我们需要注重观察和战略规划…

C++和 C 混合编程处理

原因是因为有很多功能是用 C 语言开发的&#xff0c;而 C是兼容 C 的&#xff0c;C应该能直接使用这些功能&#xff0c;那么我们把 C调用 C 实现的功能的这个做法&#xff0c;称为混合编程 但是用 C 开发的功能&#xff0c;很可能已经用 C 编译器编程成目标文件(或打包成库了)…

Zinx框架-游戏服务器开发001:zinx框架的安装

文章目录 1 zinx下载地址1.1 zinx框架的源码路径&#xff1a;1.2 安装好之后动态库的位置 2 Zinx框架运行的基本概况3 测试Zinx-框架的基本使用3.0 流程预览3.1 初始化框架3.2 标准输入回显标准输出的编写思路3.2.1 回显Echo3.2.2 写标准输入stdin通道类&#xff0c;用通道输入…

协同办公系统:企业提质增效的利器

随着科技的不断发展&#xff0c;企业对于提高工作效率、优化管理流程、降低成本的需求日益迫切。协同办公系统应运而生&#xff0c;成为了许多企业提质增效的利器。那么&#xff0c;协同办公系统究竟是如何帮助企业实现这些目标的呢&#xff1f;本文将从以下几个方面进行详细阐…

【基于MRA:自适应高频融合和注入系数优化:Pansharpening】

Pansharpening Based on Adaptive High-Frequency Fusion and Injection Coefficients Optimization &#xff08;基于自适应高频融合和注入系数优化的全色锐化&#xff09; 全色锐化的目的是将多光谱&#xff08;MS&#xff09;图像与全色&#xff08;PAN&#xff09;图像融…

【实战Flask API项目指南】之六 数据库集成 SQLAlchemy

实战Flask API项目指南之 数据库集成 本系列文章将带你深入探索实战Flask API项目指南&#xff0c;通过跟随小菜的学习之旅&#xff0c;你将逐步掌握 Flask 在实际项目中的应用。让我们一起踏上这个精彩的学习之旅吧&#xff01; 前言 在上一篇文章中&#xff0c;我们实现了…

私有化部署即时通讯软件WorkPlus,全面适配信创环境

对于企业而言&#xff0c;保护数据的安全至关重要。WorkPlus即时通讯软件允许企业在自己的服务器上部署一套私有化的聊天工具&#xff0c;确保数据完全受控于企业内部。通过私有化部署&#xff0c;企业可以有效地管理和保护敏感信息&#xff0c;防止数据泄露和滥用。 另外&…

React基础知识02

一、通过属性来传值&#xff08;props&#xff09; react中可以使用属性&#xff08;props&#xff09;可以传递给子组件&#xff0c;子组件可以使用这些属性值来控制其行为和呈现输出。 例子&#xff1a; // 1.1 父组件 import React, { useState } from react // 1.2引入子…

浅谈安科瑞直流电表在荷兰光伏充电桩系统中的应用

摘要&#xff1a;本文介绍了安科瑞直流电表在荷兰光伏充电桩系统中的应用。主要用于充电桩的电流电压电能的计量。 Abstract: This article introduces the application of Acrel DC meters in PV charging pile system in Netherlands.The device is measuring current,volt…

腾讯云域名备案后,如何解析到华为云服务器Linux宝塔面板

一、购买域名并且进行备案和解析&#xff0c;正常情况下&#xff0c;购买完域名&#xff0c;如果找不到去哪备案&#xff0c;可以在腾讯云上搜索“备案”关键词就会出现了&#xff0c;所以这里不做详细介绍&#xff0c;直接进行步骤提示&#xff1a; 二、申请ssl证书&#xff0…

mysql简单备份和恢复

版本&#xff1a;mysql8.0 官方文档 &#xff1a;MySQL :: MySQL 8.0 Reference Manual :: 7 Backup and Recovery 1.物理备份恢复 物理备份是以数据文件形式备份。这种方式效率高点&#xff0c;适合大型数据库备份。物理备份可冷备可热备。 使用mysqlbackup 命令进行物理备…

命名数据网络(NDN)介绍

命名数据网络的由来 IP网络最开始其解决的问题是两个实体间点对点通信需求&#xff0c;实现资源共享。&#xff08;简单知道即可&#xff09; 随着互联网的发展&#xff0c;互联网用户对internet的需求现已经发生了巨大变化。目前面临着以下挑战 首先是随着以内容为中心&…

力扣刷题 day63:11-02

1.字符串中的第一个唯一字符 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不存在&#xff0c;则返回 -1 。 方法一&#xff1a;两次遍历哈希表 #方法一&#xff1a;两次遍历哈希表 def firstUniqChar(s):d{}for i in s:if …

Leetcode—707.设计链表【中等】双链表的设计明天再写

2023每日刷题&#xff08;十七&#xff09; Leetcode—707.设计链表 设计单链表实现代码 typedef struct Node {int val;struct Node* next; } MyLinkedList;MyLinkedList* myLinkedListCreate() {MyLinkedList* mList (MyLinkedList *)malloc(sizeof(MyLinkedList));mList-&…

知乎盈利来源分析与指标体系构建

知乎用户画像 知乎所属行业&#xff1a;内容社区平台 知乎上的内容涉及的领域&#xff1a; 婚恋情感&#xff08;300亿总阅读量&#xff0c;截止2022年12月&#xff09;、法律纠纷&#xff08;200亿&#xff09;、教育&#xff08;200亿&#xff09;、游戏&#xff08;150亿&…

React实现文本框输入文字内容动态给图片添加文字信息(多个)并生成新的图片

文章目录 思路一思路二1. 下载html2canvas依赖包2. 搭建页面,并且创建新增节点的区域3. 初始化新增第一个节点到页面中的某个指定模块4. 当文本框发生变动&#xff0c;修改节点信息5. 实现节点删除6. 利用html2canvas将模块生成canvas&#xff0c;然后转化成图片 完整代码 收到…

Leetcode刷题详解——汉诺塔问题

1. 题目链接&#xff1a;面试题 08.06. 汉诺塔问题 2. 题目描述&#xff1a; 在经典汉诺塔问题中&#xff0c;有 3 根柱子及 N 个不同大小的穿孔圆盘&#xff0c;盘子可以滑入任意一根柱子。一开始&#xff0c;所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放…

【Web】TCP 和 UCP 的含义和区别

文章目录 一、两者含义二、两者区别 一、两者含义 TCP/IP 协议组为传输层指明了两个协议&#xff1a;TCP 和 UDP&#xff0c;他们都是作为应用程序和网络操作的中介物 TCP &#xff08;传输控制协议&#xff09;&#xff1a;通过三次握手建立可靠的连接&#xff0c;发送端将数据…

Excel自学三部曲_Part3:Excel工作场景实战(二)

文章目录 二、基础概念、表格结构与常用函数1. 业务背景、字段含义2. 筛选、排序、冻结窗格3. 状态栏数据提示、调整数据显示格式4. 公式、引用、溢出5. 连接和提取函数、时间函数、IF和IFS函数、SUMIF和SUMIFS函数&#xff08;1&#xff09;每个业务组的成交额有多少&#xff…