前端(3)——快速入门JaveScript

news2024/11/16 13:13:16

参考:

罗大富

JavaScript 教程 | 菜鸟教程

JavaScript 教程


1. JaveScript

JavaScript 简称 JS
  • JavaScript 是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果,增加用户与网页的交互性。
  • 作为一种客户端脚本语言,JavaScript 可以直接嵌入 HTML,并在浏览器中执行。
  • 与 HTML和 CSS 不同,JavaScript 使得网页不再是静态的,而是可以根据用户的操作动态变化的。

JavaScript 的作用:

  • 客户端脚本:用于在用户浏览器中执行,实现动态效果和用户交互,
  • 与 HTML和 CSS 协同工作,使得网页具有更强的交互性和动态性。网页开发
  • 使用 Node.js,JavaScript 也可以在服务器端运行,实现服务器端应用的开发后端开发:

1.1 JS的导入方式

JS有常见的三种导入方式:1)在HEAD标签内导入;2)在body标签内导入;3)外联导入(需创建一个js格式的文件)

这三种方式均需配合script标签一起使用,我们这里在scripe标签内使用consolelog函数,展示这三种方式:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS导入方式</title>
    <script>
        console.log('Hello, HEAD标签的内联样式');
    </script>
    <script src="./myscript.js"></script>
</head>
<body>
    <h1>JaveScript 的导入方式</h1>
    <script>
        console.log('Hello, body标签的内联样式');
        alert("你好,内联样式弹窗")
    </script>
</body>
</html>

myscript.js文件内容如下:

console.log('Hello, 外联样式');

我们可以在浏览器页面中点击F12,进入console查看日志:

很明显,导入成功。

此外,我们可以在script标签内做其他尝试,比如我这里使用alert函数弹出一个弹窗,显示“你好,内联样式弹窗”:

    <script>
        console.log('Hello, body标签的内联样式');
        alert("你好,内联样式弹窗")
    </script>

1.2 JS的基本语法

1.2.1 JS的变量和数据类型

JavaScript 使用 varlet 和 const 来声明变量。

  • var:声明一个变量,使用 var 声明的变量会有函数作用域或全局作用域,容易导致一些问题,现已较少使用。
  • let:声明一个块级作用域的变量。
  • const:声明一个常量,值不可改变。
<script>
    var x;
    let name = 'Alice';  // 变量可以重新赋值
    const age = 25;      // 常量,不可修改
    console.log(x,name,age);
</script>

我们可以调用console的log函数查看这些值:

    <script>
        var x;
        let name = 'Alice';  // 变量可以重新赋值
        const age = 25;      // 常量,不可修改
        console.log(x,name,age);
        let y = '示例';
        console.log(y);
        let empty_value = null;
        console.log(empty_value);
    </script>


JavaScript 有多种数据类型,主要分为两类:基本类型(原始类型)和引用类型。

  • 基本类型(Primitive types):
    • number:数字类型
    • string:字符串类型
    • boolean:布尔类型(true 或 false
    • null:空值
    • undefined:未定义的值
    • symbol:唯一标识符(ES6 引入)
    • bigint:大整数(ES11 引入)
  • 引用类型(Reference types):
    • object:对象
    • array:数组
    • function:函数(也是对象)
let num = 100;           // number
let name = 'Alice';      // string
let isActive = true;     // boolean
let person = { name: 'Alice', age: 25 };  // object

1.2.2 JS的控制语句

JavaScript 使用 ifelseelse if 来进行条件判断。

let age = 18;
if (age >= 18) {
    console.log('成年人');
} else {
    console.log('未成年人');
}

还可以使用 switch 语句进行多分支判断:

let day = 3;
switch(day) {
    case 1:
        console.log('星期一');
        break;
    case 2:
        console.log('星期二');
        break;
    case 3:
        console.log('星期三');
        break;
    default:
        console.log('未知');
}

JavaScript 支持 forwhiledo...while 等循环语句。

  • for 循环
for (let i = 0; i < 5; i++) {
    console.log(i);  // 输出 0 到 4
}
  • while 循环
let i = 0;
while (i < 5) {
    console.log(i);  // 输出 0 到 4
    i++;
}
  • do...while 循环
let i = 0;
do {
    console.log(i);  // 输出 0 到 4
    i++;
} while (i < 5);

1.2.3 JS的函数

在 JavaScript 中,函数可以通过函数声明或函数表达式定义。

  • 函数声明
function greet(name) {
    console.log('Hello, ' + name);
}
greet('Alice');  // 调用函数
  • 函数表达式
let greet = function(name) {
    console.log('Hello, ' + name);
};
greet('Bob');  // 调用函数
  • 箭头函数(ES6 引入):
let greet = (name) => {
    console.log('Hello, ' + name);
};
greet('Charlie');

1.2.4 JS的数组与对象

数组:用于存储多个值,索引从 0 开始。

let fruits = ['apple', 'banana', 'cherry'];
console.log(fruits[0]);  // 输出 'apple'

对象:用于存储具有键值对的数据。

let person = {
    name: 'Alice',
    age: 25
};
console.log(person.name);  // 输出 'Alice'

1.2.5 JS事件处理

JavaScript 事件处理是指在用户与网页元素交互时,浏览器响应并执行相应的 JavaScript 代码的机制。事件处理是前端开发中的一个重要部分,涉及到如何让网页响应用户的点击、输入、键盘操作、鼠标移动等行为。

1.2.5.1 事件的基本概念

事件(Event)是用户与网页交互时产生的动作。每当用户与网页元素进行交互时,都会触发一个事件。常见的事件包括:

  • 鼠标事件click(点击)、dblclick(双击)、mouseover(鼠标悬停)、mouseout(鼠标离开)
  • 键盘事件keydown(按下键盘)、keyup(松开键盘)、keypress(按下字符键)
  • 表单事件submit(提交表单)、input(输入框变化)、change(元素内容变化)
  • 窗口事件load(页面加载完成)、resize(窗口大小调整)、scroll(滚动)

1.2.5.2 事件处理的基本方式

a. 内联事件处理

最简单的事件处理方法是直接在 HTML 标签中使用事件属性。例如:

<button onclick="alert('按钮被点击了')">点击我</button>

这种方法将事件处理程序直接嵌入到 HTML 标签的 onclick 属性中。尽管它使用方便,但通常不推荐这种做法,因为它将行为与结构混合在一起,难以维护。

b. 通过 JavaScript 事件处理程序

通常,我们更倾向于使用 JavaScript 来处理事件,而不是在 HTML 中内联定义。这样可以将事件的处理逻辑与 HTML 内容分离,使代码更加清晰和可维护。

<button id="myButton">点击我</button>
​
<script>
    let button = document.getElementById('myButton');
    button.onclick = function() {
        alert('按钮被点击了');
    };
</script>

这里我们使用 onclick 属性将事件处理程序绑定到按钮元素。当按钮被点击时,事件处理程序会被触发并执行。

c. 使用 addEventListener 方法

addEventListener 是现代 JavaScript 中最推荐的事件绑定方法。它允许你向一个元素添加多个事件监听器,而不会覆盖已有的事件监听器。使用这种方法,可以更加灵活地控制事件的处理方式。

<button id="myButton">点击我</button>
​
<script>
    let button = document.getElementById('myButton');
    
    // 使用 addEventListener 绑定事件
    button.addEventListener('click', function() {
        alert('按钮被点击了');
    });
</script>

d. removeEventListener 方法

如果需要在某些条件下移除已经绑定的事件处理程序,可以使用 removeEventListener 方法。此方法与 addEventListener 相对应,移除之前通过 addEventListener 绑定的事件监听器。

<button id="myButton">点击我</button>
<button id="removeButton">移除点击事件</button>
​
<script>
    let button = document.getElementById('myButton');
    let removeButton = document.getElementById('removeButton');
    
    function handleClick() {
        alert('按钮被点击了');
    }
    
    button.addEventListener('click', handleClick);
    
    removeButton.addEventListener('click', function() {
        button.removeEventListener('click', handleClick);
        alert('事件已被移除');
    });
</script>

1.2.5.3 事件对象

当事件被触发时,浏览器会生成一个事件对象(event),该对象包含了有关事件的所有信息,如触发事件的元素、事件类型、键盘按键等。可以通过事件处理程序访问该对象。

<button id="myButton">点击我</button>
<script>
    let button = document.getElementById('myButton');
    
    button.addEventListener('click', function(event) {
        console.log(event); // 输出事件对象的详细信息
        console.log('事件的目标元素:', event.target);
        console.log('鼠标点击的坐标:', event.clientX, event.clientY);
    });
</script>

常用的事件对象属性:

  • event.target:触发事件的元素。
  • event.type:事件的类型(例如 clickmouseover 等)。
  • event.clientX 和 event.clientY:鼠标相对于浏览器窗口的坐标。
  • event.key:在键盘事件中,返回按下的键的名称(例如 'Enter''A')。

1.2.5.4 事件冒泡与事件捕获

JavaScript 中的事件传播机制有两种方式:事件冒泡事件捕获

  • 事件冒泡:事件从目标元素冒泡到父元素。即,事件首先在目标元素上触发,然后依次向上冒泡到祖先元素,直到最顶层的 document
    例如,在一个 <div> 内的 <button> 上点击时,button 的点击事件会先被触发,然后事件会冒泡到外部的 div 元素。
  • 事件捕获:事件从最外层的父元素开始捕获,直到目标元素。捕获阶段会先触发父元素的事件处理程序,然后才是目标元素的事件处理程序。

可以通过 addEventListener 的第三个参数来控制事件是处于冒泡阶段还是捕获阶段:

element.addEventListener('click', function(event) {
    console.log('捕获阶段');
}, true); // true 表示捕获阶段,false 或不传参数表示冒泡阶段

1.2.5.5 事件委托

事件委托是通过在父元素上绑定事件,而不是在每个子元素上绑定事件,来优化性能的一种技巧。特别是在处理动态生成的元素时,事件委托非常有用。

例如,假设你有一个列表,里面包含了多个按钮,传统方法会给每个按钮单独绑定事件。但使用事件委托,只需要在父元素上绑定一个事件处理程序即可。

html复制代码<ul id="list">
    <li><button>按钮 1</button></li>
    <li><button>按钮 2</button></li>
    <li><button>按钮 3</button></li>
</ul>
​
<script>
    let list = document.getElementById('list');
    
    list.addEventListener('click', function(event) {
        if (event.target.tagName === 'BUTTON') {
            alert(event.target.textContent);  // 显示按钮的文本内容
        }
    });
</script>

1.3 DOM

在 Web 开发中,DOM 通常与 JavaScript 一起使用。

  • 当网页被加载时,浏览器会创建页面的文档对象模型,也就是DOM(Document Object Model)。
  • 每个 HTML 或 XML 文档都可以被视为一个文栏树,文档树是整个文档的层次结构表示。
  • 文档节点是整个文档树的根节点。
  • DOM 为这个文档树提供了一个编程接口,开发者可以使用 JavaScript 来操作这个树状结构。

一个节点树如上图所示。

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

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

相关文章

人工智能:塑造未来的工作与生活

目录 人工智能技术的应用前景与影响 人工智能的历史与现状 人工智能的应用领域 人工智能的前景与挑战 个人视角&#xff1a;人工智能的应用前景与未来 人工智能在生活中的潜力 面对人工智能带来的挑战 我的观点与建议 结语 人工智能技术的应用前景与影响 随着人工智能…

东土国产自主智能控制器,亮相第七届长三角科技成果交易博览会

近日&#xff0c;第七届长三角科技成果交易博览会&#xff08;以下简称“长三角科交会”&#xff09;在上海汽车会展中心开幕。为展示嘉定新城产业集聚成果&#xff0c;宣传新城核心区投资环境&#xff0c;新城公司连续第六届参加长三角科交会。 在此次展会上&#xff0c;新城…

AUTOSAR_EXP_ARAComAPI的7章笔记(4)

☞返回总目录 相关总结&#xff1a;本地 / 网络多绑定用例总结 7.3.2 本地/网络多绑定用例 在前一节中&#xff0c;我们看到了的一种多绑定特殊变体&#xff0c;现在来看&#xff0c;也可认为是一种真实情况的变体。 假设有一个与上一章节相似的情景&#xff0c;唯一的区别…

ubuntu将firewall-config导出为.deb文件

firewall-config ubuntu是canonial 公司维护的&#xff0c;用wireshark测过&#xff0c;开机会给他们公司发遥测&#xff08;开了ufw阻塞所有连接也一样&#xff0c;canonial在里面把代码改了&#xff09;firewall-config是fedora(爱好者维护&#xff0c;公益版本)自带的防火墙…

LabVIEW中坐标排序与旋转 参见附件snippet程序

LabVIEW中坐标排序与旋转 参见附件snippet程序LabVIEW中坐标排序与旋转 参见附件snippet程序 - 北京瀚文网星科技有限公司 在LabVIEW中处理坐标排序的过程&#xff0c;尤其是按顺时针或逆时针排列坐标点&#xff0c;常见的应用包括处理几何形状、路径规划等任务。下面我将为您…

基于微信小程序的校园超市购物系统设计与实现,LW+源码+讲解

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本超市购物系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&a…

如何使用EasyExcel生成多列表组合填充的复杂Excel示例

作者&#xff1a;Funky_oaNiu 一、&#xff08;需求&#xff09;生成的表格效果&#xff1a;二、搞一个模板文件三、建立对应的表格实体类四、开始填充五、Vue3前端发起请求下载六、官方文档及AI问答 一、&#xff08;需求&#xff09;生成的表格效果&#xff1a; 其中只有顶部…

AdaBoost 二分类问题

代码功能 生成数据集&#xff1a; 使用 make_classification 创建一个模拟分类问题的数据集。 数据集包含 10 个特征&#xff0c;其中 5 个是有用特征&#xff0c;2 个是冗余特征。 数据集划分&#xff1a; 将数据分为训练集&#xff08;70%&#xff09;和测试集&#xff08;3…

权限相关知识

1.Linux权限的概念 在说Linux权限的概念之前我来问大家一个问题&#xff0c;你们觉得什么是权限&#xff1f; 权限平时的体现呢&#xff0c;就比如不是校长的亲戚就不能逛办公室&#xff0c;没充会员的爱奇艺看不了VIP影视剧&#xff0c;没成会员的的蛋糕店拿不到会员价等等等…

Python爬虫项目 | 一、网易云音乐热歌榜歌曲

文章目录 1.文章概要1.1 实现方法1.2 实现代码1.3 最终效果 2.具体讲解2.1 使用的Python库2.2 代码说明2.2.1 创建目录保存文件2.2.2 爬取网易云音乐热歌榜单歌曲 2.3 过程展示 3 总结 1.文章概要 学习Python爬虫知识&#xff0c;实现简单的一个小案例&#xff0c;网易云音乐热…

苍穹外卖-后端部分

软件开发整体介绍 前端搭建 在非中文目录中双击nginx.exe然后浏览器访问localhost即可 后端搭建 基础准备 导入初始文件 使用git进行版本控制 创建本地仓库和远程仓库,提交Git 连接数据库 连接数据库把资料中的文件放入运行即可 前后端联调测试 苍穹外卖项目接口文档…

3D电子商务是什么?如何利用3D技术提升销售转化?

在数字化浪潮席卷全球的今天&#xff0c;网上购物已成为消费者日常生活中不可或缺的一部分。然而&#xff0c;尽管其便捷性无可比拟&#xff0c;但传统电商模式中的“看不见、摸不着”问题始终困扰着消费者与商家。商品是否符合期望、尺寸是否合适、颜色是否真实……这些不确定…

EXCEL延迟退休公式

如图&#xff1a; A B为手工输入 C2EOMONTH(A2,B2*12) D2EOMONTH(C2,IF(C2>DATEVALUE("2025-1-1"),INT((DATEDIF(DATEVALUE("2025-1-1"),C2,"m")4)/4),0)) E2EOMONTH(A2,B2*12IF(EOMONTH(A2,B2*12)>DATEVALUE("2025-1-1"),INT(…

OpenSSL 自签名

参考文档&#xff1a;unigui开发人员工作手册2021 参考文章&#xff1a;保姆级OpenSSL下载及安装教程-CSDN博客 下载 Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 进入后向下拉找到下载位置&#xff0c;建议下载二进制版本的精简版&#xff0c…

DevOps工程技术价值流:加速业务价值流的落地实践与深度赋能

DevOps的兴起&#xff0c;得益于敏捷软件开发的普及与IT基础设施代码化管理的革新。敏捷宣言虽已解决了研发流程中的诸多挑战&#xff0c;但代码开发仅是漫长价值链的一环&#xff0c;开发前后的诸多问题仍亟待解决。与此同时&#xff0c;虚拟化和云计算技术的飞跃&#xff0c;…

R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...

全文链接&#xff1a;https://tecdat.cn/?p38273 多模态数据在统计学中并不罕见&#xff0c;常出现在观测数据来自两个或多个潜在群体或总体的情况。混合模型常用于分析这类数据&#xff0c;它利用不同的组件来对数据中的不同群体或总体进行建模。本质上&#xff0c;混合模型是…

Python酷库之旅-第三方库Pandas(218)

目录 一、用法精讲 1021、pandas.DatetimeIndex.inferred_freq属性 1021-1、语法 1021-2、参数 1021-3、功能 1021-4、返回值 1021-5、说明 1021-6、用法 1021-6-1、数据准备 1021-6-2、代码示例 1021-6-3、结果输出 1022、pandas.DatetimeIndex.indexer_at_time方…

从基础到进阶,Dockerfile 如何使用环境变量

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 什么是 Dockerfile 环境变量?🔖1. `ENV` 指令🔖2. `ARG` 指令🔖语法:🔖使用 `ARG` 的例子:📝 如何使用环境变量提高 Dockerfile 的灵活性🔖1. 动态配置环境🔖2. 配置不同的运行环境🔖3. 多…

2002.6 Partitioning the UMLS semantic network.划分 UMLS 语义网络

Partitioning the UMLS semantic network | IEEE Journals & Magazine | IEEE Xplore 问题 统一医学语言系统&#xff08;UMLS&#xff09;语义网络中的语义类型&#xff08;ST&#xff09;在知识表示和应用中存在不足&#xff0c;例如 ST 的组织方式缺乏直观性和可解释性…

帽子矩阵--记录

帽子矩阵&#xff08;Hat Matrix&#xff09;并不是由某一位具体的科学家单独发明的&#xff0c;而是逐渐在统计学和线性代数的发展过程中形成的。帽子矩阵的概念最早出现在20世纪初的统计学文献中&#xff0c;尤其是在回归分析的研究中得到了广泛应用。然而&#xff0c;具体是…