【JavaScript】2.4 JavaScript和浏览器

文章目录

    • DOM 操作
      • 选择元素
      • 修改元素
      • 创建和删除元素
    • 事件处理
      • 监听事件
      • 阻止默认行为
    • 异步编程
      • 回调函数
      • Promise
      • async/await
    • 总结

JavaScript最初是为了在浏览器中使用而创建的,它是Web开发的重要组成部分。在这一章节中,我们将学习如何使用JavaScript与浏览器进行交互。

DOM 操作

DOM(Document Object Model)是一个编程接口,它允许JavaScript操作HTML文档的内容和结构。HTML文档被解析成一个DOM树,我们可以通过JavaScript来操作DOM树的节点。

选择元素

我们可以使用各种方法来选择DOM元素。

var elementById = document.getElementById('myId'); // 通过ID选择元素
var elementsByClassName = document.getElementsByClassName('myClass'); // 通过类名选择元素
var elementsByTagName = document.getElementsByTagName('div'); // 通过标签名选择元素
var elementBySelector = document.querySelector('.myClass'); // 通过CSS选择器选择元素
var elementsBySelectorAll = document.querySelectorAll('.myClass'); // 通过CSS选择器选择所有匹配的元素

修改元素

我们可以修改DOM元素的属性和内容。

var element = document.getElementById('myId');
element.className = 'newClass'; // 修改类名
element.style.color = 'red'; // 修改样式
element.innerHTML = '<strong>Hello, world!</strong>'; // 修改HTML内容

创建和删除元素

我们可以创建新的DOM元素,并添加到DOM树中。我们也可以删除已有的DOM元素。

var newElement = document.createElement('div'); // 创建新元素
newElement.innerHTML = 'Hello, world!';
document.body.appendChild(newElement); // 添加新元素到bodyvar oldElement = document.getElementById('myId');
document.body.removeChild(oldElement); // 从body删除元素

事件处理

浏览器中的事件是JavaScript与用户交互的主要方式。我们可以使用JavaScript来监听和处理事件。

监听事件

我们可以使用addEventListener方法来监听事件。

var button = document.getElementById('myButton');
button.addEventListener('click', function() {console.log('Button clicked!');
});

在这个例子中,我们监听了按钮的点击事件。当用户点击按钮时,控制台会输出一条消息。

阻止默认行为

在某些情况下,我们可能想要阻止事件的默认行为。我们可以使用preventDefault方法来实现。

var link = document.getElementById('myLink');
link.addEventListener('click', function(event) {event.preventDefault(); // 阻止链接的默认点击行为,即阻止页面跳转console.log('Link clicked!');
});

在这个例子中,我们监听了链接的点击事件。当用户点击链接时,我们阻止了页面跳转,然后在控制台输出一条消息。

异步编程

JavaScript中的异步编程是处理耗时操作的一种方式。我们可以使用回调函数、Promise和async/await来处理异步操作。

回调函数

回调函数是一种函数,它作为参数传递给另一个函数,并在适当的时候被调用。

setTimeout(function() {console.log('Hello, world!');
}, 1000);

在这个例子中,我们使用setTimeout函数来延迟执行一个操作。我们把一个函数(回调函数)和一个延迟时间(1000毫秒)传递给setTimeout。一秒后,回调函数被调用,控制台输出一条消息。

Promise

Promise是处理异步操作的一种方式。Promise有三种状态:pending(等待)、fulfilled(成功)和rejected(失败)。

var promise = new Promise(function(resolve, reject) {setTimeout(function() {resolve('Hello, world!');}, 1000);
});promise.then(function(value) {console.log(value); // 输出:Hello, world!
}).catch(function(error) {console.error(error);
});

在这个例子中,我们创建了一个新的Promise。这个Promise会在1秒后成功,值为’Hello, world!'。然后我们使用then方法来处理成功的结果。

async/await

async/await是处理异步操作的一种方式。它使得异步代码看起来像同步代码。

async function helloWorld() {return new Promise(resolve => {setTimeout(() => {resolve('Hello, world!');}, 1000);});
}async function main() {var value = await helloWorld();console.log(value); // 输出:Hello, world!
}main();

在这个例子中,我们定义了一个异步函数helloWorld,它返回一个Promise。然后我们在main函数中使用await关键字等待Promise的结果。

总结

JavaScript和浏览器紧密相连,通过JavaScript,我们可以操作DOM,处理事件,以及进行异步编程。理解这些基本概念,将有助于我们更好地使用JavaScript来创建动态和交互式的Web应用。

在接下来的章节中,我们将深入学习更多关于JavaScript的知识。希望你在学习的过程中能够找到乐趣,并且通过学习JavaScript,开启你的编程之旅!
在这里插入图片描述

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

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

相关文章

Gitlab安装与操作

GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务。 可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能&#xff0c;能够浏览源代码&#xff0c;管理缺陷和注释。可以管理团队对仓库的…

shell基础

一.Shell脚本编程概述 1.基本概念 将要执行的命令按顺序保存到一个文本文件&#xff1b; 给该文件可执行权限&#xff1b; 可结合各种Shell控制语句以完成更复杂的操作。 2.作用 Linux系统中的Shell是一个特殊的应用程序&#xff0c;它介于操作系统内核与用户之间&#x…

单链表——OJ题(一)

目录 ​一.前言 二.移除链表元素 三.返回链表中间节点 四.链表中倒数第K个节点 五.合并两个有序链表 六.反转链表 七.链表分割 八.链表的回文结构 九.相交链表 十.环形链表 十一.环形链表&#xff08;二&#xff09; ​六.结语 一.前言 本文主要对平时的链表OJ进行…

Day33力扣打卡

打卡记录 最大和查询&#xff08;排序单调栈上二分&#xff09; 链接 大佬的题解 class Solution:def maximumSumQueries(self, nums1: List[int], nums2: List[int], queries: List[List[int]]) -> List[int]:ans [-1] * len(queries)a sorted(((a, b) for a, b in zi…

机器学习第11天:降维

文章目录 机器学习专栏 主要思想 主流方法 1.投影 二维投射到一维 三维投射到二维 2.流形学习 一、PCA主成分分析 介绍 代码 二、三内核PCA 具体代码 三、LLE 结语 机器学习专栏 机器学习_Nowl的博客-CSDN博客 主要思想 介绍&#xff1a;当一个任务有很多特征…

如何在IAR软件中使用STLINK V2编译下载和调试stm8单片机

安装使用IAR后&#xff0c;如使用系统默认设置&#xff0c;往往很难正常实现用stlink v2来下载和调试stm8芯片&#xff0c;我的解决方法如下&#xff1a; 1、打开项目的options菜单&#xff1a; 2、在项目的选项菜单中选择ST-LINK作为调试工具&#xff1a; 3、选择额外的输出…

IDEA JRebel安装使用教程

1、下载插件 版本列表&#xff1a;https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel/versions 下载&#xff1a;JRebel and XRebel 2022.4.1 这里下载2022.4.1版本&#xff0c;因为后续新版本获取凭证会比较麻烦。下载完成会是一个压缩包。 2、安装 选择第一步…

使用VSCode+PlatformIO搭建ESP32开发环境

Arduino IDE本来就是为创客们开发的&#xff0c;虽然没代码提示功能&#xff0c;文件的关系也不清晰&#xff0c;函数不能跳转&#xff0c;头文件也打不开&#xff0c;但人家的初衷就是为了简单而生的&#xff1b;但还是有一些同学喜欢高级点的IDE&#xff0c;也没问题&#xf…

C语言经典好题:字符串左旋(详解)

这题还是比较简单的&#xff0c;各位看完有收获吗 #include<stdio.h> #include<string.h> void leftturn(char arr[],int k) {int len strlen(arr);for (int i 0;i <k;i)//左旋k个字符{//创建临时变量char tmp 0;tmp arr[0];//将数组第一个字符存储到临时变…

【C++进阶之路】第五篇:哈希

文章目录 一、unordered系列关联式容器1.unordered_map&#xff08;1&#xff09;unordered_map的介绍&#xff08;2&#xff09;unordered_map的接口说明 2. unordered_set3.性能对比 二、底层结构1.哈希概念2.哈希冲突3.哈希函数4.哈希冲突解决&#xff08;1&#xff09;闭散…

ArmSoM-RK3588编解码之mpp编码demo解析:mpi_enc_test

一. 简介 [RK3588从入门到精通] 专栏总目录mpi_enc_test 是rockchip官方编码 demo本篇文章进行mpi_enc_test 的代码解析&#xff0c;编码流程解析 二. 环境介绍 硬件环境&#xff1a; ArmSoM-W3 RK3588开发板 软件版本&#xff1a; OS&#xff1a;ArmSoM-W3 Debian11 三. …

Python---变量的作用域

变量作用域&#xff1a;指的是变量的作用范围&#xff08;变量在哪里可用&#xff0c;在哪里不可用&#xff09;&#xff0c;主要分为两类&#xff1a;局部变量和全局变量。 定义在函数外部的变量就称之为全局变量&#xff1b; 定义在函数内部的变量就称之为局部变量。 # 定义…

nodejs+vue线上生活超市购物商城系统w2c42

超市管理系统的开发流程包括对超市管理系统的需求分析&#xff0c;软件的设计建模以及编写程序实现系统所需功能这三个阶段。对超市管理系统的需求分析。在这个阶段&#xff0c;通过查阅书籍&#xff0c;走访商场搜集相关资料&#xff0c;了解经营者对软件功能的具体所需和建议…

gitlab设置项目clone地址

直接在线修改地址 虽然是个小问题但是我查了很多都是说要去修改配置文件&#xff0c;可是我是docker部署的&#xff0c;修改配置文件之后我还要重新打包镜像想想都不咋规范&#xff0c;后才终于知道可以直接设置&#xff0c;不要改配置文件&#xff01;&#xff01;&#xff0…

PHP中cookie与session使用指南

PHP中cookie与session使用指南 Cookie和session的出现&#xff0c;是为了解决http协议无状态交互的窘境&#xff0c;它们都用于存储客户端的相关信息 0x01 Cookie使用 简介 Cookie 是一种在客户端存储数据的机制&#xff0c;通常用于记录用户的状态和偏好。下面将介绍如何在…

【日常总结】Swagger-ui 导入 showdoc (优雅升级Swagger 2 升至 3.0)

一、场景 环境&#xff1a; 二、存在问题 三、解决方案 四、实战 - Swagger 2 升至 3.0 &#xff08;Open API 3.0&#xff09; Stage 1&#xff1a;引入Maven依赖 Stage 2&#xff1a;Swagger 配置类 Stage 3&#xff1a;访问 Swagger 3.0 Stage 4&#xff1a;获取 js…

【JUC】十、ForkJoin

文章目录 1、分支合并框架2、案例3、ForkJoinTask4、工作窃取算法5、ForkJoinPool 一个个任务执行在一个个线程上&#xff0c;倘若某一个任务耗时很久&#xff0c;期间其他线程都无事可做&#xff0c;显然没有利用好多核CPU这一计算机资源&#xff0c;因此&#xff0c;出现了&q…

13 redis中的复制的拓扑结构

1、一主一从 为了性能考虑&#xff0c;主节点可以不开启AOF&#xff0c;但是要避免重启。 2、一主多从 适用于读操作的场景。由于从节点多&#xff0c;所以主的复制压力大 3、树状主从 数据先同步到redisB,redisC从节点C,E来看&#xff0c;redisB相当于主机了&#xff0c;可以…

【JavaEE】Servlet实战案例:表白墙网页实现

一、功能展示 输入信息&#xff1a; 点击提交&#xff1a; 二、设计要点 2.1 明确前后端交互接口 &#x1f693;接口一&#xff1a;当用户打开页面的时候需要从服务器加载已经提交过的表白数据 &#x1f693;接口二&#xff1a;当用户新增一个表白的时候&#xff0c;…

玩转系统|长亭雷池WAF详细使用教程——深入了解

目录 配置防护站点 界面操作​ 如何配置域名、端口、上游服务器​ 工作原理​ 在单独设备上部署雷池&#xff08;推荐&#xff09;​ 直接在网站服务器上部署雷池​ 和其他反代设备一起部署的情况​ 配置后网站无法访问&#xff0c;如何排查​ 测试防护效果 确认网站…