JavaScript基础语法与DOM操作入门_第1页
JavaScript基础语法与DOM操作入门_第2页
JavaScript基础语法与DOM操作入门_第3页
JavaScript基础语法与DOM操作入门_第4页
JavaScript基础语法与DOM操作入门_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20XX/XX/XXJavaScript基础语法与DOM操作入门汇报人:XXXCONTENTS目录01

JavaScript语言概述02

前置核心知识03

变量与数据类型04

运算符与流程控制CONTENTS目录05

函数定义与使用06

DOM基础07

事件处理08

综合实例演示01JavaScript语言概述JavaScript的核心定义JavaScript是一种运行在客户端(浏览器)的高级编程语言,用于实现网页的交互效果和动态功能,是Web开发的三大核心技术之一。JavaScript的主要作用包括实现网页特效(如监听用户行为并作出反馈)、表单验证(判断数据合法性)、数据交互(获取后台数据并渲染到前端),以及通过Node.js进行服务端编程。JavaScript的组成部分由ECMAScript(基础语法核心,规定变量、语句等)、DOM(文档对象模型,操作页面元素)和BOM(浏览器对象模型,操作浏览器功能)三部分组成。JavaScript的定义与作用JavaScript的组成部分

ECMAScript:语法核心ECMAScript规定了JavaScript的基础语法核心,包括变量、数据类型、运算符、控制流等内容,是JavaScript的标准规范。

DOM:文档对象模型DOM(DocumentObjectModel)允许JavaScript操作网页元素,实现对页面结构的动态修改,如添加、删除、修改元素等。

BOM:浏览器对象模型BOM(BrowserObjectModel)提供了与浏览器交互的接口,可操作浏览器窗口,如弹出对话框、获取窗口大小、存储数据等。开发环境准备核心工具组合现代JavaScript开发需准备浏览器(Chrome/Firefox)与代码编辑器(VSCode推荐),前者提供运行环境与调试工具,后者支持语法高亮、代码提示等功能。浏览器开发者工具通过F12或Ctrl+Shift+I打开开发者工具,Console面板用于执行JS代码与查看输出,Sources面板可断点调试,Elements面板辅助DOM操作学习。HTML文件创建与运行新建扩展名为.html的文件,使用<script>标签嵌入JS代码,通过浏览器直接打开文件即可运行。示例结构:<!DOCTYPEhtml><html><body><script>alert("Hello");</script></body></html>外部JS文件引入将JS代码写入独立.js文件,通过<scriptsrc="路径/文件名.js"></script>引入HTML,实现结构与行为分离,提升代码可维护性。02前置核心知识第一个JS程序:"你好!"实现完整代码示例<!DOCTYPEhtml><htmllang="zh-CN"><head><metacharset="UTF-8"><title>我的第一个JS程序</title></head><body><script>alert("你好!");</script></body></html>核心执行逻辑浏览器解析到<script>标签时启动JS引擎,执行alert("你好!")语句,在页面弹出包含指定文本的警示对话框。关键注意事项JS代码需放在<script>标签内;语句结尾建议添加英文分号;;<script>标签可放置在<head>或<body>中,位置影响执行顺序。运行步骤说明将代码保存为index.html文件,使用浏览器打开该文件,即可触发alert弹窗显示"你好!"文本。JS代码的三种书写形式行内式:嵌入HTML元素事件属性

直接写在HTML元素的事件属性中(如onclick),适用于简单交互。语法示例:<inputtype="button"value="点击"onclick="alert('haha')">。注意需用单引号包裹JS代码,避免与HTML双引号冲突,不推荐大量使用。内嵌式:写在script标签中

将JS代码写在HTML文件的<script>标签内,是开发中最常用形式,适用于中等复杂度代码。语法示例:<script>alert("内嵌式JS");console.log("控制台日志");</script>。优点是代码与HTML同文件,方便调试,可写多行复杂代码。外部式:引入独立.js文件

将JS代码写在单独的.js文件中,通过<scriptsrc="文件路径"></script>引入HTML。语法示例:<scriptsrc="./js/my.js"></script>。特点是script标签内不可写代码,可使HTML更易读,便于代码复用和维护,推荐大型项目使用。注释的使用方法单行注释:快速标注单行代码使用双斜杠"//"标记,注释内容从"//"开始到行尾。适用于简短说明,快捷键通常为Ctrl+/。例如://这是单行注释,解释后续代码功能。多行注释:详细说明代码块使用"/**/"包裹,可跨越多行。适用于对函数、复杂逻辑的整体说明。快捷键通常为Shift+Alt+A。例如:/*这是多行注释

用于解释一段代码的功能和实现思路*/。注释的核心作用注释是程序员的"笔记"和代码的"说明书",能提高代码可读性,帮助自己和他人理解代码逻辑,同时可用于临时屏蔽测试代码,不影响程序运行。输入输出语法详解

输入语法:prompt()函数prompt()函数用于显示一个包含提示信息的对话框,供用户输入文本内容。语法为prompt('提示信息'),用户输入的内容以字符串形式返回,若点击取消则返回null。输出语法一:alert()函数alert()函数用于在浏览器中弹出一个包含指定消息的警告对话框。语法为alert('要显示的内容'),常用于简单的信息提示,会阻塞后续代码执行直到用户点击确定。输出语法二:console.log()函数console.log()函数用于在浏览器开发者工具的控制台输出信息,是开发调试的常用工具。语法为console.log(要输出的内容),支持输出多种数据类型,不会影响页面显示。输出语法三:document.write()函数document.write()函数用于向HTML文档中写入内容。语法为document.write('内容'),若在页面加载完成后使用,可能会覆盖原有页面内容,通常用于页面初始化时动态生成内容。输入输出综合案例通过prompt()获取用户姓名,使用console.log()在控制台记录,再用alert()弹出欢迎消息:varname=prompt('请输入您的姓名');console.log('用户姓名:'+name);alert('欢迎您,'+name+'!');03变量与数据类型变量的定义与初始化变量是计算机存储数据的容器,使用let关键字声明,如letage;声明后可通过赋值运算符=初始化,如letname="Alice";实现声明与赋值一步完成。变量的读取与修改通过变量名直接读取其存储的值,如console.log(age);修改变量值时直接重新赋值,如age=25;允许更改变量存储的数据内容。变量声明的特殊情况只声明不赋值的变量值为undefined;不声明直接使用变量会报错;不声明直接赋值的变量会成为全局变量,不推荐此用法。变量使用综合案例:计算两数之和通过prompt()获取用户输入的两个数字,转换为数值类型后相加,使用console.log()输出结果,完整演示变量的声明、赋值、读取和运算过程。变量的基本使用变量声明方式:var、let与const01var:函数作用域与变量提升var是传统声明方式,具有函数作用域,声明会被提升到作用域顶部。示例:console.log(name);varname="JavaScript";输出undefined,因为变量声明被提升但赋值未提升。02let:块级作用域与暂时性死区ES6引入的let具有块级作用域,{}内声明的变量仅在块内有效。存在暂时性死区,声明前访问会报错。示例:{letmessage="Hello";}console.log(message);抛出ReferenceError。03const:不可变引用与块级作用域const用于声明常量,赋值后不可修改引用,同样具有块级作用域。注意:对象属性可修改。示例:constPI=3.14;PI=3;抛出TypeError;constuser={name:"Alice"};user.age=30;允许。04最佳实践:优先const,合理使用let现代开发中优先使用const防止意外修改,需重新赋值时使用let,避免使用var。这能提高代码可读性和稳定性,减少作用域相关错误。基本数据类型详解

number数字类型:整数与小数的统一容器不区分整数与小数,包含特殊值Infinity(无穷大)和NaN(非数字)。如letage=25;letprice=99.99;console.log(1/"hello");//输出NaN。

string字符串类型:文本数据的表示用单引号、双引号或反引号包裹,支持模板字符串。如letname="张三";letmessage=`Mynameis${name}`;可通过.length获取长度,使用+进行拼接。

boolean布尔类型:逻辑判断的基石仅有true(真)和false(假)两个值,常用于条件判断。如letisActive=true;在加法运算中true视为1,false视为0。

undefined与null:空值的两种表达undefined表示变量声明未赋值,如leta;console.log(a);//undefined。null表示定义了但为空对象,如letempty=null;二者区别:undefined是"空盒子",null是"空对象盒子"。引用数据类型的概念与特点引用数据类型是JavaScript中存储复杂数据结构的容器,其值为对象在内存中的引用地址。与基本数据类型直接存储值不同,引用类型通过引用地址访问数据,当复制引用类型变量时,复制的是地址而非实际数据。常见引用数据类型分类主要包括对象(Object)、数组(Array)、函数(Function)等。对象用于存储键值对集合,数组用于存储有序数据列表,函数则是可执行的代码块,它们均属于引用类型。引用类型与基本类型的核心区别基本类型在赋值时直接复制值,而引用类型赋值时复制引用地址,导致多个变量指向同一对象。例如:leta={name:'Alice'};letb=a;='Bob';此时也会变为'Bob',体现引用传递特性。引用数据类型简介数据类型检测方法单击此处添加正文

typeof运算符:基础类型检测typeof是最常用的类型检测方式,返回值为字符串,如"number"、"string"、"boolean"、"undefined"、"function",但无法区分null和对象,对数组也返回"object"。instanceof运算符:引用类型检测instanceof用于检测对象是否为某个构造函数的实例,如[]instanceofArray返回true,{}instanceofObject返回true,适用于判断引用数据类型。Ototype.toString.call():精准类型判断该方法返回"[object类型]"格式的字符串,可精准识别所有类型,如Ototype.toString.call(null)返回"[objectNull]",是检测类型的可靠方式。Array.isArray():数组类型专用检测ES5新增的Array.isArray()方法专门用于判断是否为数组,解决了typeof对数组返回"object"的问题,如Array.isArray([])返回true。类型转换规则

隐式类型转换当不同类型数据进行运算时,JavaScript会自动转换类型。如字符串与数字相加会转换为字符串拼接,数字与布尔值运算时true转为1、false转为0。

显式类型转换:转字符串通过String()函数或toString()方法将其他类型转为字符串。例如String(123)结果为"123",(123).toString()同样得到"123"。

显式类型转换:转数字使用Number()、parseInt()或parseFloat()函数。Number("123")得123,parseInt("123abc")得123,parseFloat("3.14")得3.14。

显式类型转换:转布尔值通过Boolean()函数转换。除false、0、""、undefined、null、NaN外,其他值均转为true,如Boolean("hello")结果为true。04运算符与流程控制常用运算符分类

算术运算符用于数值计算,包括加(+)、减(-)、乘(*)、除(/)、取余(%)、自增(++)、自减(--)。例如:3+5=8,10%3=1,leta=2;a++后a的值为3。

赋值运算符将右侧值赋给左侧变量,基础赋值(=)及复合赋值(+=、-=、*=、/=、%=)。例如:letx=5;x+=3等价于x=x+3,结果x为8。

比较运算符比较两个值返回布尔值,包括等于(==)、全等(===)、不等于(!=)、不全等(!==)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)。注意==会自动转换类型,===严格比较类型和值。

逻辑运算符用于逻辑判断,包括与(&&)、或(||)、非(!)。与运算全真才真,或运算全假才假,非运算取反。例如:true&&false结果为false,!true结果为false。分支语句:if-else与switch

01if-else语句:条件判断的基础结构if-else语句通过判断条件是否成立来执行不同代码块。基础语法:if(条件表达式){条件成立时执行}else{条件不成立时执行}。适用于复杂条件或范围判断。

02if-elseif-else多条件分支当需要判断多个条件时,可使用if-elseif-else结构。按顺序依次判断条件,满足首个条件后执行对应代码块并跳出分支。例如:根据分数区间判断成绩等级(90分以上为A,80-89分为B等)。

03switch语句:固定值匹配的高效选择switch语句通过比较表达式的值与case标签的值来执行对应代码块,语法结构为:switch(表达式){case值1:代码1;break;case值2:代码2;break;...default:默认代码;}。适用于离散值匹配场景。

04if-else与switch的适用场景对比if-else适合范围判断(如年龄>18)、复杂逻辑组合(与或非运算);switch适合单值匹配(如枚举值、固定选项),代码结构更清晰。注意:switch比较使用严格相等(===),需注意数据类型匹配。循环语句:for与while

for循环:固定次数的精准控制for循环适用于已知循环次数的场景,语法结构为for(初始化;条件;增量){循环体}。例如,使用for循环输出1到5的数字:for(leti=1;i<=5;i++){console.log(i);}

while循环:条件驱动的灵活执行while循环通过条件判断控制循环执行,语法结构为while(条件){循环体}。当条件为true时执行循环体,适合循环次数不确定的场景。例如,使用while循环计算1到100的和:letsum=0,i=1;while(i<=100){sum+=i;i++;}

do-while循环:至少执行一次的保证do-while循环先执行一次循环体,再判断条件,语法结构为do{循环体}while(条件)。无论条件是否成立,循环体至少执行一次。例如,获取用户输入直到输入有效数字:letnum;do{num=prompt("请输入数字");}while(isNaN(num));

循环控制:break与continue的应用break用于立即终止整个循环,continue用于跳过当前循环剩余部分进入下一次循环。例如,在for循环中遇到偶数时跳过:for(leti=1;i<=10;i++){if(i%2===0)continue;console.log(i);}05函数定义与使用函数的声明方式函数声明使用function关键字,语法为:function函数名(参数列表){函数体}。例如:functionadd(a,b){returna+b;}函数表达式函数表达式将函数赋值给变量,如:letmultiply=function(a,b){returna*b;},可用于匿名函数或具名函数。参数与返回值函数参数为输入数据,返回值通过return语句返回。无return时默认返回undefined,如functiongreet(){console.log("Hello");}调用后返回undefined。函数调用方式通过函数名加括号调用,如add(2,3)。参数数量可与声明不一致,多余参数被忽略,缺少参数为undefined。函数的基本语法函数参数与返回值函数参数的基本定义函数参数是函数定义时括号内声明的变量,用于接收调用时传入的数据。例如:functionadd(a,b){returna+b;}中,a和b为参数。实参与形参的区别形参是函数定义时的参数变量,如add(a,b)中的a、b;实参是调用函数时传入的具体值,如add(2,3)中的2、3。默认参数的使用ES6允许为参数设置默认值,当调用时未传入对应实参则使用默认值。例如:functiongreet(name="Guest"){console.log(`Hello${name}`);}return语句与返回值return语句用于将函数处理结果返回给调用者,执行后函数立即结束。若无return,函数默认返回undefined。例如:functionmultiply(a,b){returna*b;}参数传递方式基本数据类型按值传递,函数内修改不影响外部;引用数据类型按引用传递,函数内修改会影响外部。例如:修改数组参数的元素会改变原数组。函数作用域

函数作用域的定义函数作用域是指变量在函数内部声明时,仅在该函数内部可访问,外部无法直接访问。

函数作用域的特性函数内部声明的变量具有局部性,函数执行完毕后变量会被销毁,不影响外部作用域。

函数作用域示例functiontest(){leta=10;console.log(a);//输出10}test();console.log(a);//报错:aisnotdefined

函数作用域与全局作用域的区别全局作用域的变量在整个程序中可访问,函数作用域的变量仅在函数内部有效,避免变量污染。箭头函数简介箭头函数的语法结构箭头函数是ES6引入的函数简写形式,基本语法为:(参数)=>{函数体}。当只有一个参数时可省略括号,函数体只有一条语句时可省略大括号和return。与传统函数的核心区别箭头函数没有自己的this绑定,其this继承自外层作用域;不能作为构造函数使用,无法通过new关键字调用;没有arguments对象,需通过剩余参数(...)获取参数列表。箭头函数的适用场景适用于简短的回调函数,如数组方法map、filter、forEach的参数;适合作为简洁的函数表达式,减少代码冗余;尤其适合需要保留外层this上下文的场景。箭头函数实例演示传统函数写法:functionadd(a,b){returna+b;}箭头函数简写:(a,b)=>a+b;数组处理示例:constnumbers=[1,2,3];constdoubled=numbers.map(n=>n*2);06DOM基础DOM概念与树结构

DOM的核心定义DOM(DocumentObjectModel)是W3C标准,将HTML/XML文档表示为树形结构,允许程序动态访问和修改文档内容、结构及样式。

DOM树的组成单元树由节点(Node)构成,包括元素节点(如<div>)、文本节点(文字内容)、属性节点(class/id等)及注释节点。

DOM树的层级关系以HTML文档为例:根节点为document,下一级是<html>,其包含<head>和<body>子节点,形成父子、兄弟层级结构。

DOM树的作用提供了编程语言(如JavaScript)操作网页的接口,使开发者能实现动态内容更新、事件响应等交互效果,是前端交互的基础。获取DOM元素的方法通过ID获取元素使用document.getElementById()方法,根据元素id属性值获取唯一元素。语法:document.getElementById("id值"),返回匹配的DOM元素对象,若不存在则返回null。通过标签名获取元素使用document.getElementsByTagName()方法,根据HTML标签名获取元素集合。语法:document.getElementsByTagName("标签名"),返回HTMLCollection类数组对象,包含所有匹配标签的元素。通过类名获取元素使用document.getElementsByClassName()方法,根据元素class属性值获取元素集合。语法:document.getElementsByClassName("类名"),返回HTMLCollection类数组对象,包含所有匹配类名的元素。通过CSS选择器获取元素使用document.querySelector()和document.querySelectorAll()方法,通过CSS选择器语法获取元素。前者返回第一个匹配元素,后者返回所有匹配元素组成的NodeList集合。语法分别为:document.querySelector("选择器")、document.querySelectorAll("选择器")。标准属性操作:获取与设置通过element.属性名获取或设置标准HTML属性,如<img>的src、<a>的href。示例:letimgSrc=imgElement.src;imgElement.src="new.jpg";自定义属性操作:data-*属性使用data-*前缀定义自定义属性,通过datasetAPI访问。示例:HTML中<divdata-id="123"></div>,JS中divElement.dataset.id获取"123",可直接修改dataset.id="456"。属性操作综合案例实现图片切换功能:通过获取img元素的src属性,点击按钮时修改src值切换图片;同时利用data-index存储当前索引,实现循环切换逻辑。DOM元素属性操作DOM元素样式操作内联样式操作:直接修改元素style属性通过元素的style属性直接设置CSS样式,语法为element.style.样式名="值"。例如:element.style.color="red",会将元素文本颜色设为红色。注意样式名需使用驼峰命名法,如fontSize对应CSS中的font-size。类名操作:通过classList控制样式类使用classListAPI添加、移除或切换CSS类,实现样式批量控制。常用方法有add("类名")、remove("类名")、toggle("类名")。例如:element.classList.add("active")为元素添加active类,结合CSS预定义样式实现效果切换。获取计算样式:getComputedStyle方法通过window.getComputedStyle(element)获取元素最终渲染的样式,返回包含所有CSS属性的对象。例如:conststyle=getComputedStyle(element);console.log(style.fontSize)可获取元素计算后的字体大小,结果为带单位的字符串。实例演示:动态切换按钮样式创建按钮点击事件,通过classList.toggle("active")切换激活状态样式。CSS中定义.active类的背景色、边框等样式,实现点击按钮时样式动态变化,直观展示DOM样式操作的应用场景。07事件处理事件的基本概念

事件的定义:用户与网页的交互信号事件是指用户在网页上的操作行为(如点击按钮、输入文本)或浏览器自身状态变化(如页面加载完成),是JavaScript实现交互效果的核心机制。

事件三要素:主体、类型与处理程序事件主体(触发元素)、事件类型(如click点击事件)、事件处理程序(响应函数)共同构成完整事件体系,三者缺一不可。

事件驱动模型:交互逻辑的执行流程浏览器采用"事件驱动"模式,当事件触发时,JavaScript引擎会执行对应的处理函数,实现页面动态响应,例如点击按钮弹出提示框。

常见事件类型:从基础到进阶包括鼠标事件(click/dblclick)、键盘事件(keydown/keyup)、表单事件(submit/change)及文档事件(load/unload)等,覆盖各类交互场景。鼠标事件:交互的基础方式包括点击事件(click)、双击事件(dblclick)、鼠标移动(mousemove)等,如点击按钮触发弹窗:element.onclick=function(){alert('点击了')};键盘事件:用户输入的响应包含按键按下(keydown)、按键释放(keyup)、按键按下并释放(keypress),可用于监听用户输入内容,如检测回车键:element.onkeydown=function(e){if(e.key==='Enter'){console.log('回车被按

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论