JavaScript语法与DOM操作

目录

一、JS语法与DOM操作

(一)JS语法

1. 基础语法

2. 函数

3. 对象与数组

(二)DOM操作

1. DOM基础

2. 获取元素

3. 操作元素内容

4. 操作元素样式

5. 创建和插入元素

6. 删除和替换元素

7. 事件处理


 

一、JS语法与DOM操作

(一)JS语法

1. 基础语法
  • 变量声明

    • 使用varletconst声明变量。

    • var声明的变量存在变量提升,且在函数作用域内有效。

    • letconst声明的变量不存在变量提升,let声明的变量在块级作用域内有效,const声明的变量用于声明常量,一旦赋值不能更改。

    var x = 5;
    let y = 10;
    const z = 15;
  • 数据类型

    • 基本数据类型:StringNumberBooleanUndefinedNullSymbol(ES6新增)、BigInt(ES2020新增)。

    • 引用数据类型:Object(包括ArrayFunction等)。

    let str = "Hello"; // String
    let num = 123; // Number
    let bool = true; // Boolean
    let undef; // Undefined
    let nul = null; // Null
    let sym = Symbol("sym"); // Symbol
    let bigInt = BigInt(1234567890123456789012345678901234567890n); // BigInt
    let obj = {}; // Object
    let arr = []; // Array
    let func = function () {}; // Function
  • 运算符

    • 算术运算符:+-*/%++--

    • 比较运算符:=====!=!==><>=<=

    • 赋值运算符:=+=-=*=/=等。

    • 逻辑运算符:&&(逻辑与)、||(逻辑或)、!(逻辑非)。

    let a = 5;
    let b = 10;
    let sum = a + b; // 算术运算
    let isEqual = a == b; // 比较运算
    let isTrue = a > 0 && b > 0; // 逻辑与运算
  • 控制结构

    • 条件语句

      • if语句

      • switch语句

      if (a > b) {console.log("a大于b");
      } else {console.log("a不大于b");
      }switch (a) {case 5:console.log("a是5");break;default:console.log("a不是5");
      }
    • 循环语句

      • for循环

      • while循环

      • do...while循环

      for (let i = 0; i < 5; i++) {console.log(i);
      }let j = 0;
      while (j < 5) {console.log(j);j++;
      }let k = 0;
      do {console.log(k);k++;
      } while (k < 5);
2. 函数
  • 函数声明与表达式

    • 函数声明:function functionName(parameters) { ... }

    • 函数表达式:let functionName = function(parameters) { ... };

    function add(a, b) {return a + b;
    }let subtract = function (a, b) {return a - b;
    };
  • 参数与返回值

    • 函数可以有任意数量的参数,通过arguments对象可以访问所有参数。

    • 使用return语句返回值。

    function multiply(a, b) {return a * b;
    }function sumAll() {let sum = 0;for (let i = 0; i < arguments.length; i++) {sum += arguments[i];}return sum;
    }
  • 闭包

    • 闭包是一个函数和其周围的状态(词法环境)的组合。闭包可以捕获外部函数的局部变量,即使外部函数已经执行完毕。

    function createCounter() {let count = 0;return function () {count++;console.log(count);};
    }let counter = createCounter();
    counter(); // 输出1
    counter(); // 输出2
3. 对象与数组
  • 对象

    • 对象是键值对的集合,键是字符串,值可以是任意数据类型。

    • 创建对象的方式:对象字面量、new Object()、构造函数、Object.create()

    let person = {name: "John",age: 30,greet: function () {console.log("Hello, " + this.name);},
    };let person2 = new Object();
    person2.name = "Jane";
    person2.age = 25;function Person(name, age) {this.name = name;this.age = age;
    }let person3 = new Person("Bob", 40);let person4 = Object.create(person);
  • 数组

    • 数组是一种特殊的对象,用于存储有序的数据集合。

    • 创建数组的方式:数组字面量、new Array()

    let arr = [1, 2, 3, 4, 5];
    let arr2 = new Array(1, 2, 3, 4, 5);// 数组方法
    arr.push(6); // 添加元素到数组末尾
    arr.pop(); // 移除数组末尾元素
    arr.unshift(0); // 添加元素到数组开头
    arr.shift(); // 移除数组开头元素
    let newArr = arr.slice(1, 3); // 截取数组部分元素
    let joinedArr = arr.concat([6, 7]); // 合并数组

(二)DOM操作

1. DOM基础
  • DOM(文档对象模型) 是一个编程接口,用于操作HTML和XML文档。它将文档表示为一个由节点和对象组成的树形结构,通过这些节点和对象,程序可以更改文档的结构、样式和内容。

  • 节点类型

    • 元素节点:<div><p>等。

    • 属性节点:id="main"class="container"等。

    • 文本节点:元素内的文本内容。

    • 注释节点:<!-- 注释内容 -->

2. 获取元素
  • 通过ID获取元素

    • document.getElementById(id):根据元素的id属性值获取元素。

    let element = document.getElementById("main");
  • 通过类名获取元素

    • document.getElementsByClassName(className):根据元素的class属性值获取元素集合。

    let elements = document.getElementsByClassName("container");
  • 通过标签名获取元素

    • document.getElementsByTagName(tagName):根据元素的标签名获取元素集合。

    let divs = document.getElementsByTagName("div");
  • 通过CSS选择器获取元素

    • document.querySelector(selector):根据CSS选择器获取第一个匹配的元素。

    • document.querySelectorAll(selector):根据CSS选择器获取所有匹配的元素集合。

    let firstDiv = document.querySelector("div");
    let allDivs = document.querySelectorAll("div");
3. 操作元素内容
  • 设置和获取文本内容

    • textContent:获取或设置元素的文本内容。

    let p = document.querySelector("p");
    console.log(p.textContent); // 获取文本内容
    p.textContent = "新的文本内容"; // 设置文本内容
  • 设置和获取HTML内容

    • innerHTML:获取或设置元素的HTML内容。

    let div = document.querySelector("div");
    console.log(div.innerHTML); // 获取HTML内容
    div.innerHTML = "<p>新的HTML内容</p>"; // 设置HTML内容
4. 操作元素样式
  • 直接操作样式

    • 通过style属性直接设置元素的样式。

    let element = document.getElementById("main");
    element.style.color = "red";
    element.style.fontSize = "20px";
  • 切换类名

    • 使用classList属性操作元素的类名。

    • classList.add(className):添加类名。

    • classList.remove(className):移除类名。

    • classList.toggle(className):切换类名(如果存在则移除,不存在则添加)。

    let element = document.getElementById("main");
    element.classList.add("active");
    element.classList.remove("inactive");
    element.classList.toggle("highlight");
5. 创建和插入元素
  • 创建元素

    • document.createElement(tagName):创建一个新的元素。

    let newDiv = document.createElement("div");
  • 插入元素

    • appendChild(child):将一个元素作为子元素添加到另一个元素的末尾。

    • insertBefore(child, referenceChild):将一个元素插入到另一个元素的指定位置。

    let parentDiv = document.getElementById("parent");
    let newP = document.createElement("p");
    newP.textContent = "新段落";
    parentDiv.appendChild(newP);let referenceP = document.querySelector("p");
    parentDiv.insertBefore(newP, referenceP);
6. 删除和替换元素
  • 删除元素

    • removeChild(child):从父元素中移除一个子元素。

    let parentDiv = document.getElementById("parent");
    let childP = document.querySelector("p");
    parentDiv.removeChild(childP);
  • 替换元素

    • replaceChild(newChild, oldChild):用一个新元素替换父元素中的一个子元素。

    let parentDiv = document.getElementById("parent");
    let newDiv = document.createElement("div");
    newDiv.textContent = "新内容";
    let oldDiv = document.querySelector("div");
    parentDiv.replaceChild(newDiv, oldDiv);
7. 事件处理
  • 绑定事件

    • addEventListener(eventType, eventHandler):为元素绑定事件监听器。

    let button = document.getElementById("myButton");
    button.addEventListener("click", function () {console.log("按钮被点击");
    });
  • 事件对象

    • 在事件处理函数中,可以通过event对象获取事件的相关信息,如事件类型、目标元素等。

    button.addEventListener("click", function (event) {console.log(event.type); // 输出事件类型console.log(event.target); // 输出目标元素
    });
  • 解绑事件

    • removeEventListener(eventType, eventHandler):移除元素的事件监听器。

    button.removeEventListener("click", function () {console.log("按钮被点击");
    });

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【access开发】导入excel 并生成表

hi&#xff0c;大家好呀&#xff01; 最近天气越来越暖了&#xff0c;在这个春暖花开的季节了&#xff0c;每天心情应该都是美美的&#xff0c;正所谓一年之计在于春&#xff0c;在这个美好的季节&#xff0c;大家一起努力学习学习吧&#xff01;那我们来看看今天学点啥呢&…

查看GPU型号、大小;CPU型号、个数、核数、内存

GPU型号、大小 nvidia-smiCPU型号 cat /proc/cpuinfo | grep model name | uniqCPU个数 cat /proc/cpuinfo | grep "physical id" | uniq | wc -lCPU核数 cat /proc/cpuinfo | grep "cpu cores" | uniqCPU内存 cat /proc/meminfo | grep MemTotal参考…

如何使用AIOps明确Devps的问题归责

引言 拿出一个确凿的证据往往是解决背锅问题的重要办法。只有这样&#xff0c;才能够在没有互相指责、逃避责任或为自己及团队开脱等不良闹剧的情况下达成共识。DevOps 团队可以借助 AIOps 数据支持的可信度&#xff0c;让问题更清晰、背景更明确&#xff0c;从而一致做出更好…

Yolo系列之Yolo v3的概述、网络结构以及与v1,v2对比

Yolo v3的概述、模型理解以及与v1,v2对比 目录 Yolo v3的概述、模型理解以及与v1,v2对比1 YOLOv3概述1.1 概念1.2 主要特点1.3 优缺点 2 网络结构理解2.1 核心网络框架2.2 先验框2.3 特征图2.4 Softmax层替换 3 Yolo v3与v1,v2对比3.1 网络结构3.2 多尺度预测3.3 分类器与损失函…

AIGC工具平台-百叶窗卡点视频

本模块通过智能算法自动分析音频节奏&#xff0c;精准识别高潮卡点&#xff0c;并生成与音乐高度同步的动态视频。同时支持 百叶窗样式的个性化设置&#xff0c;增强视觉冲击力&#xff0c;助力用户打造节奏感强、富有创意的视频作品。 此外用户可灵活管理图片素材&#xff0c…

【原创】通过S3接口将海量文件索引导入elasticsearch

在医院海量影像文件通过s3传到蓝光存储时&#xff0c;要找一个文件需要全部文件遍历一遍&#xff0c;效率非常非常低。 S3 是对象存储服务&#xff0c;本身不是专门为快速文件查找设计的&#xff0c;而 Elasticsearch 是搜索引擎&#xff0c;在查找特定文件或数据方面具有明显…

MyBatis注解方式:从CRUD到数据映射的全面解析

目录 1. MyBatis是什么&#xff1f;2.准备工作2.1创建工程2.2 数据准备2.3 持久层代码2.4 单元测试 3.Mybatis的增删改查操作&#xff08;使用注解方式&#xff09;3.1 增&#xff08;insert&#xff09;3.2 删&#xff08;delete&#xff09;3.3 改&#xff08;update&#xf…

Java 大视界 -- 基于 Java 的大数据机器学习模型的多模态融合技术与应用(143)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

进程管理笔记1-进程线程基础知识

5.1 进程线程基础知识 进程 进程的基本定义&#xff1a; 进行的程序。代码经过编译&#xff0c;变成二进制可执行文件&#xff0c;运行这个可执行文件后&#xff0c;装载到内存中&#xff0c;然后CPU执行其中指令。 并行和并发&#xff1a; 并行指两个任务并列前行&#x…

【VolView】纯前端实现CT三维重建-CBCT

文章目录 什么是CBCTCBCT技术路线使用第三方工具使用Python实现使用前端实现 纯前端实现方案优缺点使用VolView实现CBCT VolView的使用1.克隆代码2.配置依赖3.运行4.效果 进阶&#xff1a;VolView配合Python解决卡顿1.修改VtkThreeView.vue2.新增Custom3DView.vue3.Python生成s…

OpenEuler kinit报错找不到文件的解决办法

客户一套华为大数据集群平台,在一台arm平台openEuler服务器上面安装完集群客户端之后,使用kinit认证出现报错No such file or directory: 最终定位是操作系统/lib64缺少ld包导致,执行下面的命令恢复&#xff1a; ln -sv /lib/ld-linux-aarch64.so.1 /lib64/ld-linux-aarch64.s…

国内首家,百度智能云千帆AppBuilder全面兼容MCP协议

百度智能云千帆 AppBuilder 已兼容 MCP 协议&#xff01;作为国内首家支持 MCP 协议的大模型应用开发平台&#xff08;Claude、LangGraph、Cursor、Cline、N8N等海外平台已支持&#xff09;&#xff0c;千帆 AppBuilder 完成兼容后&#xff0c;用户可通过千帆 AppBuilder 轻松调…

uniapp自身bug | uniapp+vue3打包后 index.html无法直接运行

前提&#xff1a; 已经修改了基础路径 打开打包文件&#xff0c;双击运行index.html报错&#xff0c;无法访问页面 uniappvue2项目是可以正常运行的 vue3修改publicPath: ./后&#xff0c;也是可以正常访问打包文件中的index.html 点进控制台提供的链接&#xff1a;https:/…

Ubuntu快速安装使用gRPC C++

目录 引言一、快速安装1. 安装必要依赖库2. 安装gRPC 二、测试使用三、参考博客 引言 关于gRPC随着云原生微服务的火热也流行了起来&#xff0c;而且学好一个gRPC框架对目前来说也是必须的了。然而对于一个基础的小白来说&#xff0c;这个gRPC的框架运用起来是及其的困难&…

AES 简介 以及 C# 和 js 实现【加密知多少系列_3】

〇、AES 简介 AES 的全称是 Advanced Encryption Standard&#xff0c;意思是高级加密标准。它的出现主要是为了取代 DES&#xff08;Data Encryption StandardData Encryption Standard&#xff09;加密算法的&#xff0c;因为我们都知道 DES 算法的密钥长度是 56Bit&#xf…

在Django模型中的Mysql安装

安装mysql驱动 文章目录 安装mysql驱动1.打开PowerShell 安装mysql的驱动2.安装mysqlclient驱动2.1开始安装2.2 pip list 进行验证 出现mysqlclient 以及pymysql即可 3.正式安装mysql3.1打开mysql官网 www.mysql.com3.2点击下载 然后划到最后点击mysql社区下载 3.3 点击适合win…

AI赋能企业协作6-FizEIM的功能探索

本系列文章AI赋能企业协作与第一个系列IM工具对比中反复比较了国内外、商业、开源的IM工具以及IM工具的AI支持&#xff0c;在之前的比较对象中&#xff0c;由于信息偏差&#xff0c;Workplus&#xff08;BeeWorks&#xff09;已不再开源&#xff0c;这里向各位读者致歉&#xf…

java项目之基于ssm的旅游论坛(源码+文档)

项目简介 旅游论坛实现了以下功能&#xff1a; 用户信息管理&#xff1a; 用户信息新增 用户信息修改 景点信息管理&#xff1a; 景点信息添加 景点信息删除 景点信息修改 论坛类型管理 论坛类型添加 论坛类型修改 论坛类型删除 公告类型管理&#xff1a; 公告类型添加 公…

Linux安装Elasticsearch集群-----docker安装es集群

目录 技术背景 1.2 实验目标 二、实验内容 1.1 服务器规划 二、传统方式安装Elasticsearch集群 2.1 安装Java环境&#xff08;10.1.1.6/8&#xff09; 2.3 配置集群节点&#xff08;以10.1.1.6&#xff09; 2.4 启动服务 ES Data节点1&#xff08;10.1.1.8&#xff09;…

【嵌入式】复刻SQFMI开源的Watchy墨水屏电子表——(2)软件部分

书接上文 基于乐鑫 ESP32-PICO-D4 模块的墨水屏智能手表开源项目Watchy 完成了硬件部分&#xff0c;接下来就是软件部分&#xff1a; 一 开发环境配置&#xff08;Arduino ESP32&#xff09; 首先需要进行 Arduino ESP32 开发环境的安装配置&#xff0c;过程参考之前的帖子&a…