JS的学习与使用

JS的学习与使用

在这里插入图片描述

一 什么是Javascript?

  • Javascript是一门跨平台,面向对象的脚本语言,是用来控制网页行为的,它能使网页可以交互

  • java与Javascript是完全不同的语言,不论是概念还是设计,但是基础语法类似

  • ECMA国际定义了ECMAScript标准,JS是遵守这一标准的

二 JS引入方式

  • 内部脚本:将JS代码定义再HTML页面中

    • JS必须位于标签之间

    • 在HTML文档中,可以在任意地方,放置任意数量的script

    • 一般会把脚本至于元素的底部,可以改善显示速度

  • 外部脚本:将JS代码定义在外部JS文件中,然后引入到HTML页面中

    • 外部JS文件中,只能包含JS代码,不包含Script标签

    • Script标签不能自闭合 导致引入的JS文件无法使用

  • <!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>alert('Hello JS');</script> --><!-- 外部脚本 --><script src="../js/demo.js"></script>
    </head>
    <body></body>
    </html>
    

三 JS基础语法

  • 书写语法

    • 区分大小写:与Java一样,除变量名,函数名以及其他一切东西都是区分大小写的

    • 每行结尾的分号可有可无

    • 注释

  • 变量

    • 使用var关键字声明变量

    • 可以存放不同类型的值

    • 命名规则

      • 不能以数字开头

      • 使用驼峰命名

      • 字母数字下划线

    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-基本语法-变量</title>
      </head>
      <body></body>
      <script>// var定义变量var a = 10;a = "张三"; // 变量可以重新赋值alert(a);// 特点1:作用域比较大 全局变量// 特点2:可以重复定义{var x = 1;// alert(x);var x = "a";}alert(x);// 特点3:可以不声明直接使用// alert(y); // undefinedy = 100;alert(y);// let定义变量// 特点1:作用域比较小 局部变量{let x = 1;// alert(x);}// alert(x); // 报错// 特点2:不能重复定义// let x = 1;// let x = "a"; // 报错// const定义常量const PI = 3.14;// PI = 3.1415926; // 报错
      </script>
      </html>
      
  • 数据类型,运算符,流程控制语句

    • 数据类型

      • 原始类型:number(整数 小数 NaN) string boolean null underfined(变量未初始化默认值)

      • 引用类型

      • typeof运算符可以获取数据类型

      • <!DOCTYPE html>
        <html lang="en">
        <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-数据类型</title>
        </head>
        <body></body>
        <script>// 原始数据类型alert(typeof 123); // numberalert(typeof(3.14)); // numberalert(typeof 'hello'); // stringalert(typeof true); // booleanalert(typeof(null)); // objectvar a;alert(typeof a); // undefined
        </script>
        </html>
        
    • 运算符

      • 算数运算符

      • 赋值运算符

      • 比较运算符

      • 逻辑运算符

      • 三元运算符

      • 全等运算符===

        • ==会进行类型转换 ===不会进行类型转换
    • 类型转换

      • 其他类型转为boolean

        • number:0和NaN为false

        • string:空字符串为false

        • null和undefined:false

        • <!DOCTYPE html>
          <html lang="en">
          <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-运算符</title>
          </head>
          <body></body>
          <script>// ==会进行类型转换 ===不会进行类型转换var age = 20;var _age = '20';var $age = 20;alert(age == _age); //truealert(age === _age); //falsealert(age === $age); //true// 类型转换 - 其他类型转为数字alert(parseInt("12"));alert(parseInt("12a45"));alert(parseInt("a12a45"));// 类型转换 - 其他类型转换为booleanif (0){alert("0转换为false");}if (NaN){alert("NaN转换为false");}if (""){alert("空字符串转换为false");}if (" "){alert("空格转换为true");}if ("abc"){alert("非空字符串转换为true");}if(null){alert("null转换为false");}if(undefined){alert("undefined转换为false");}   
          </script>
          </html>
          
  • 流程控制

四 JS函数

  • 介绍:函数是被设计为执行特定任务的代码块

  • 定义:通过function关键字进行定义

  • 注意:

    • 形参不需要类型

    • 返回值也不需要定义类型 可以在函数内部直接使用return返回即可

五 JS对象

  • Array

    • 用来定义数组

    • 定义:var arr = new Array();

                ` var arr = [1,2,3,4];`
      
    • 属性

      • length
    • 方法

      • foreach()

      • push()

      • splice()

    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-对象-Array</title>
      </head>
      <body></body>
      <script>// // 定义数组// var arr = new Array(1,2,3,4);// // var arr2 = [1,2,3,4];// console.log(arr[0]);// console.log(arr[1]);// // 特点:长度可变 类型可变// var arr2 = [1,2,3,4];// arr2[10] = 50;// console.log(arr2[10]);// console.log(arr2[9]);// console.log(arr2[8]);// arr2[9] = "a";// arr2[8] = false;// console.log(arr2);var arr2 = [1,2,3,4];for (let i = 0; 2< arr2.length; i++) {console.log(arr2[i]);}// foreach:遍历数组中有值的元素arr2.forEach(function(e){console.log(e);})// ES6 箭头函数:(...) => {...}arr2.forEach((e) => {console.log(e);})// push:添加元素到数组末尾arr2.push(5);console.log(arr2);// splice:删除元素arr2.splice(2,2);
      </script>
      </html>
      
  • String

    • 定义

      • var str = new String("HelloString");

      • var str = "hello String";

    • 属性

      • length
    • 方法

      • charAt()

      • indexOf()

      • trim()

      • subString()\

    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-对象-Array</title>
      </head>
      <body></body>
      <script>// 创建字符串对象// var str = new String("hello world");var str = " hello world ";console.log(str);// length属性console.log(str.length);// charAt()方法console.log(str.charAt(0));// indexOf()方法console.log(str.indexOf("lo"));// trim()方法var s = str.trim();console.log(s);// substring()方法 用于截取子字符串console.log(s.substring(0, 5));
      </script>
      </html>
      
  • JSON

    • 自定义对象

    • 定义

      • var user = {

        • name = ?;

        • age = ?;

      • }

    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-对象-Array</title>
      </head>
      <body></body>
      <script>
      //    自定义对象
      var user = {name: "张三",age: 10,gender: "男",sayHi(){alert("hi");}
      }alert(user.name);
      user.sayHi();// 定义JSON
      // 多用于作为数据载体,在网络中进行数据传输
      var jsonstr = '{"name":"Tom","age":18,"gender":"男"}';
      alert(jsonstr.name); // undefined// JSON字符串转化为js对象
      var obj = JSON.parse(jsonstr);
      alert(obj.name);// js对象转化为JSON字符串
      alert(JSON.stringify(obj));</script>
      </html>
      
  • BOM

    • 概念:Browser Object Model 浏览器对象模型,允许JavaScript与浏览器对话,JS将浏览器的各个组成部分封装为对象

    • 组成:

      • Window:窗口对象

      • Location:地址栏对象

      • Navigator:浏览器对象

      • Screen:屏幕对象

      • History:历史记录对象

    • Window:

      • 获取:直接使用window,其中window可以省略,例如:alert()

      • 属性

        • history:对history对象的只读引用

        • location:用于窗口或框架的Location对象

        • navigator:对navigator对象的只读引用

      • 方法

        • alert():显示带有一段消息和一个确认按钮的警告框

        • comfirm():显示带有一段消息以及确认按钮和取消按钮的对话框

        • setinterval():按照指定的周期(ms)来调用函数或计算表达式

        • setTimeout():在指定的毫秒数后调用函数或计算表达式

    • Location

      • 获取:使用window.location或location

      • 属性:

        • href:设置或返回完整的url
    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-对象-BOM</title>
      </head>
      <body></body>
      <script>//获取window.alert('hello BOM');alert('hello BOM window');//方法//confirm 弹出对话框 确认:true 返回:falsevar flag = confirm('您确认删除该记录吗?');alert(flag);//定时器 -- setInterval -- 周期性执行某一函数var i = 0;setInterval(function(){i++;console.log('定时器执行了' + i + '次');},2000);//定时器 -- setTimeout -- 延迟执行某一函数,只执行一次setTimeout(function(){console.log('延迟执行');},3000);//locationalert(location.href);location.href = 'http://www.baidu.com';
      </script>
      </html>
      
  • DOM

    • 将标记语言的各个组成部分封装为对应的对象

      • Doucument:整个文档对象

      • Element:元素对象

      • Attribute:属性对象

      • Text:文本对象

      • Comment:注释对象

    • Core DOM – 所有文档类型的标准模型

        • Doucument:整个文档对象

        • Element:元素对象

        • Attribute:属性对象

        • Text:文本对象

        • Comment:注释对象

    • XML DOM – XML文档的标准模型

    • HTML DOM – HTML文档的标准模型

      • Image:< img >

      • Button:< input type=“button” >

    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-对象-DOM</title>
      </head>
      <body><div id="tb1">课程表</div><table><tr><th>学号</th><th>姓名</th><th>分数</th><th>评语</th></tr><tr class="data"><td>001</td><td>张三</td><td>90</td><td>很优秀</td></tr><tr class="data"><td>002</td><td>李四</td><td>92</td><td>优秀</td></tr><tr class="data"><td>003</td><td>王五</td><td>83</td><td>很努力</td></tr><tr class="data"><td>004</td><td>赵六</td><td>98</td><td>666</td></tr></table><br><div style="text-align: center;"><input id="b1" type="button" value="改变标题内容" onclick="fn1()"><input id="b2" type="button" value="改变标题字体颜色" onclick="fn2()"><input id="b3" type="button" value="删除最后一个" onclick="fn3()"></div>
      </body>
      <script>function fn1(){document.getElementById('tb1').innerHTML="学员成绩表";}function fn2(){document.getElementById('tb1').style="font-size: 30px; text-align: center;  color: red;"}function fn3(){var trs = document.getElementsByClassName('data');trs[trs.length-1].remove();}
      </script>
      </html>
      
    • 在这里插入图片描述

    • <!DOCTYPE html>
      <html lang="en">
      <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>JS-对象-DOM</title>
      </head>
      <body><img src="" id="h1"><br><br><div class="cls">14公寓421</div><br><div class="cls">黑科技惩虚员</div><br><input type="checkbox" name="hobby">电影<input type="checkbox" name="hobby">旅游<input type="checkbox" name="hobby">游戏</body>
      <script>//1 获取Element元素//1.1 获取元素--根据id获取var img = document.getElementById('h1');alert(img);//1.2 获取元素--根据标签名获取var divs = document.getElementsByTagName('div');for (let i = 0;i < divs.length;i++){alert(divs[i]);}//1.3 获取元素--根据类名获取var cls = document.getElementsByClassName('cls');for (let i = 0;i < cls.length;i++){alert(cls[i]);}//1.4 获取元素--根据name属性获取var hobbies = document.getElementsByName('hobby');for (let i = 0;i < hobbies.length;i++){alert(hobbies[i]);}//2.查询参考手册,完成属性,方法的获取var cls = document.getElementsByClassName('cls');cls[0].innerHTML = '14公寓421状元阁';</script>
      </html>
      

六 JS事件监听

什么是事件?

HTML事件是发生在HTML元素上的事情,比如:
  • 按钮被点击

  • 鼠标移动到元素上

  • 按下键盘按键

事件监听

JS可以在事件被侦测时执行指定的代码

事件绑定

  • 使用HTML标签中的事件属性进行绑定

  • 使用DOM对象属性进行绑定

常见事件
在这里插入图片描述

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

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

相关文章

Docker:查看镜像里的文件

目录 背景步骤1、下载所需要的docker镜像2、创建并运行临时容器3、停止并删除临时容器 背景 在开发过程中&#xff0c;为了更好的理解和开发程序&#xff0c;有时需要确认镜像里的文件是否符合预期&#xff0c;这时就需要查看镜像内容 步骤 1、下载所需要的docker镜像 可以使…

【网络安全 | 漏洞挖掘】通过密码重置污染实现账户接管

未经许可,不得转载。 文章目录 密码重置污染攻击漏洞挖掘的过程目标选择与初步测试绕过 Cloudflare 的尝试发现两个域名利用 Origin 头部污染实现账户接管攻击流程总结在今天的文章中,我们将深入探讨一种 账户接管 漏洞,并详细分析如何绕过 Cloudflare 的保护机制,利用密码…

Redis 5 种基本数据类型详解

Redis 共有 5 种基本数据类型&#xff1a;String&#xff08;字符串&#xff09;、List&#xff08;列表&#xff09;、Set&#xff08;集合&#xff09;、Hash&#xff08;散列&#xff09;、Zset&#xff08;有序集合&#xff09;。 这 5 种数据类型是直接提供给用户使用的&…

AI 提示词(Prompt)入门 十:最佳实践|详细询问,提供细节!

1、原则解释 当与 ChatGPT 交流时&#xff0c;提供具体和详细的信息非常重要。 这样做可以帮助 ChatGPT 更准确地理解你的需求和上下文&#xff0c;从而生成更相关和有用的回答 明确的信息可以包括具体的问题背景、相关领域的说明、你所期望的答案类型等。 2、如何实践 明…

数据库的隔离机制---对MySQL 默认隔离级别的理解

参考&#xff1a; 脏读、幻读和不可重复读_脏读 ​​​​​​ 全网最详细MVCC讲解&#xff0c;一篇看懂 - 知乎全网最详细MVCC讲解&#xff0c;一篇看懂 - 知乎 面试官&#xff1a;MySQL 的默认隔离级别是什么?可以解决幻读问题吗&#xff1f; 目录 一、脏读、幻读、不可…

UNI-APP小程序答题功能开发(左右滑动,判断,填空,问答,答题卡,纠错,做题倒计时等)

原博&#xff1a;uni-app小程序答题功能开发(左右滑动,判断,填空,问答,答题卡,纠错,做题倒计时等)_uniapp答题模板-CSDN博客 标签&#xff1a; 小程序 uni-app 模板链接:答题模板 html部分 这里没啥好说的,就是根据不同的状态显示不同的内容 <template><view>…

SpringBoot多环境配置的实现

前言 开发过程中必然使用到的多环境案例&#xff0c;通过简单的案例分析多环境配置的实现过程。 一、案例 1.1主配置文件 spring:profiles:active: prod server:port: 80801.2多环境配置文件 开发环境 blog:domain: http://localhost:8080测试环境 blog:domain: https:/…

另外一种缓冲式图片组件的用法

文章目录 1. 概念介绍2. 使用方法2.1 基本用法2.2 缓冲原理3. 示例代码4. 内容总结我们在上一章回中介绍了"FadeInImage组件"相关的内容,本章回中将介绍CachedNetworkImage组件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中介绍的CachedNetwo…

Linux下多线程

在Linux下的底层里并没有多线程这个概念&#xff0c;取而代之的是轻量级进程的概念。应为在Llinu下内核下并没有TCB,而只有PCB。 线程是什么 在⼀个程序⾥的⼀个执⾏路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“⼀个进程内部 的控制序…

Win10/11 安装使用 Neo4j Community Edition

如果你下载的是 Neo4j Community Edition 的压缩包&#xff0c;意味着你需要手动解压并配置 Neo4j。以下是详细的使用步骤&#xff1a; 0. 下载压缩包 访问Neo4j官网&#xff0c;找到 Community Edition 版本并选择 4.x 或者 5.x 下载&#xff1a;https://neo4j.com/deployme…

PCB+SMT线上报价系统+PCB生产ERP系统自动化拼板模块升级

PCB生产ERP系统的智能拼版技术&#xff0c;是基于PCB前端报价系统获取到的用户或市场人员已录入系统的板子尺寸及set参数等&#xff0c;按照最优原则或利用率最大化原则自动进行计算并输出拼版样式图和板材利用率&#xff0c;提高工程人员效率&#xff0c;减少板材的浪费。覆铜…

Excel根据条件动态索引单元格范围

假如我是一个老板&#xff0c;下面有数不胜数的员工&#xff0c;我要检查他们每周的工作产出&#xff0c;列一个排行榜&#xff0c;提高员工积极性&#xff0c;毕竟多劳多得嘛。 每天去手动统计&#xff0c;未免显得不太聪明&#xff0c;我们可以利用公式来解决这个问题。 我们…

SpringBoot配置相关的内容

依赖Starter和Parent 查依赖坐标网站&#xff1a;Maven Repository: Search/Browse/Explorehttps://mvnrepository.com/ 设置配置文件 配置文件相关的配置 yml多个数据的书写 配置文件的读取

机器学习-37-对ML的思考之机器学习发展的三个阶段和驱动AI发展三驾马车的由来

文章目录 1 引言2 机器学习发展的三个阶段2.1 萌芽期(20世纪50年代)2.1.1 达特茅斯会议(人工智能诞生)2.1.2 机器学习名称的由来2.2 知识期(20世纪80年代)2.2.1 知识瓶颈问题2.2.2 机器学习顶级会议ICML2.2.3 Machine Learning创刊2.2.4 神经网络规则抽取2.3 算法期(20世纪90年…

使用win32com将ppt(x)文件转换为pdf文件

本文来记录下如何使用win32com将ppt(x)文件转换为pdf文件 文章目录 win32com概述win32com优缺点代码实例本文小结 win32com概述 Pywin32 是一个用于与 Microsoft Windows 操作系统交互的 Python 扩展模块&#xff0c;它提供了对多个 Windows API 的访问&#xff0c;包括对 Mic…

鸿蒙实战:页面跳转

文章目录 1. 实战概述2. 实现步骤2.1 创建项目2.2 准备图片素材2.3 编写首页代码2.4 创建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 实战概述&#xff1a;本实战通过ArkUI框架&#xff0c;在鸿蒙系统上开发了一个简单的两页面应用。首页显示问候语和“下一页”按钮&…

uniapp微信小程序接入airkiss插件进行WIFI配网

本文可参考uniapp小程序插件 一.申请插件 微信公众平台设置页链接&#xff1a;微信公众平台 登录您的小程序微信公众平台&#xff0c;进入设置页&#xff0c;在第三方设置->插件管理->添加插件中申请AiThinkerAirkissforWXMini插件&#xff0c;申请的插件appId为【wx6…

django解决跨域问题

django解决跨域问题 第一步 查看自己的 django 依赖里面有没有 django-cors-headers 包 直接 cmd pin list第二步如果没有 在自己的 pycharm 里面安装 django-cors-headers 包 pip install django-cors-headers第三步检查是否安装成功 查看自己的 django-cors-headers 安…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

【C++派生类新增对象的初始化顺序】单继承下派生类新增成员对象的初始化顺序

单继承下派生类新增成员对象的初始化顺序 &#xff08;1&#xff09;【意识】派生类新增成员对象也要初始化&#xff0c;千万别忘&#xff01; &#xff08;2&#xff09;派生类构造函数执行顺序 ①调用基类构造函数 ②对派生类的新增成员对象初始化[调用顺序为类中声明顺序] ③…