JS的学习与使用

news2024/12/24 2:08:39

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); // undefined
          y = 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); // number
            alert(typeof(3.14)); // number
            alert(typeof 'hello'); // string
            alert(typeof true); // boolean
            alert(typeof(null)); // object
            var 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); //true
              alert(age === _age); //false
              alert(age === $age); //true
          
              // 类型转换 - 其他类型转为数字
              alert(parseInt("12"));
              alert(parseInt("12a45"));
              alert(parseInt("a12a45"));
          
              // 类型转换 - 其他类型转换为boolean
              if (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 返回:false
          var flag = confirm('您确认删除该记录吗?');
          alert(flag);
      
          //定时器 -- setInterval -- 周期性执行某一函数
          var i = 0;
          setInterval(function(){
              i++;
              console.log('定时器执行了' + i + '次');
          },2000);
      
          //定时器 -- setTimeout -- 延迟执行某一函数,只执行一次
          setTimeout(function(){
              console.log('延迟执行');
          },3000);
      
          //location
          alert(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.coloradmin.cn/o/2240596.html

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

相关文章

WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule [WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇]&#xff08;本文&#xff09; WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇 WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前…

发布rust crate

文章目录 一、cargo构建的配置类型&#xff1a;dev与release两种1.编译级别2.将 crate 发布到 Crates.io对整个库的注释pub use再导出功能发布crates.io 参考 一、cargo构建的配置类型&#xff1a;dev与release两种 $ cargo buildFinished dev [unoptimized debuginfo] targe…

Bugku CTF_Web——文件上传

Bugku CTF_Web——文件上传 进入靶场 My name is margin,give me a image file not a php抓个包上传试试 改成png也上传失败 应该校验了文件头 增加了文件头也不行 试了一下 把文件类型改成gif可以上传 但是还是不能连接 将Content-Type改大小写 再把文件后缀名改成php4 成…

三菱FX5UPLC以太网Socket通信功能

通过专用指令与通过以太网连接的对象设备以TCP及UDP协议收发任意数据的功能。 *1、是用于存储从开放的对象设备中接收到的数据的区域。 CPU模块:连接No.1~8以太网模块:连接No.1~32 以TCP协议进行通信时 TCP是在对象设备的端口号间建立连接&#xff0c;从而进行可靠的数据通信…

jmeter介绍、使用方法、性能测试、现参数化和数据驱动、分布式测试、压力测试、接口测试

目录 1.JMeter的组件介绍 2.JMeter介绍和使用方法 3.使用JMeter进行性能测试 4.JMeter如何实现参数化和数据驱动 5.使用JMeter进行分布式测试 6.使用JMeter完成压力测试 7.使用JMeter完成接口测试 下载并安装JMeter&#xff1a;从官方网站&#xff08;https://jmeter.ap…

【Android】组件化开发入门

文章目录 引入组件是什么?为什么使用组件化开发?什么是模块化&#xff0c;组件化&#xff0c;插件化&#xff1f;常见实现 组件分层创建module 组件单独调试配置组件工程类型配置组件ApplicationId和AndroidManifest文件 引入 组件是什么? 组件&#xff08;Component&#…

java访问华为网管软件iMaster NCE的北向接口时传递参数问题

上一篇文章介绍了利用《java访问华为网管软件iMaster NCE的北向接口》的一般性步骤&#xff0c;这里详细介绍其中一个读取性能数据的示例。原因是读取华为网管软件北向接口&#xff0c;完全找不到可供参考的例子。如果不需要传递什么参数&#xff0c;就能获取到结果&#xff0c…

鸿蒙 入门——ArkUI 自定义组件间的“后代“双向同步@Provide和@Consume装饰器小结(五)

文章大纲 引言一、Provide和Consume装饰器概述1、Provide和Consume关系的绑定2、使用规则3、变量的传递/访问规则4、支持的观察变化的场景5、Provide和Consume变量的值初始化和更新机制5.1、初始渲染5.2、当Provide装饰的数据变化时&#xff1a;5.3、当Consume装饰的数据变化时…

【MySQL从入门到放弃】InnoDB磁盘结构(一)

前言 从MySQL 5.5版本开始默认 使用InnoDB作为引擎&#xff0c;它擅长处理事务&#xff0c;具有自动崩溃恢复的特性&#xff0c;在日常开发中使用非常广泛。 下面是官方的InnoDB引擎架构图&#xff0c;主要分为内存结构和磁盘结构两大部分。 上一篇文章&#xff0c;我们解析了…

C哈的刷题计划之输出数字螺旋矩阵(1)

1、盲听C哈说 都说数据结构与算法是编程的核心&#xff0c;它们两个是内功与心法&#x1f600;&#xff0c;其它编程工具只是招式&#xff0c;学会了内功与心法&#xff0c;学习新事物&#xff08;这里特指层出不穷的IT技术&#xff09;就没有那么难了&#xff0c;实际上&#…

cv::RotatedRect::points误差较大

最后发现不是point的精度问题&#xff0c;float不至于产生这么大误差&#xff0c;是自己代码里缓存了顶点坐标&#xff0c;后面由手动修改了旋转矩形的角度&#xff0c;导致不匹配&#xff01; 下文可以忽略了-_-! 发现一个天坑&#xff0c;通过高宽和角度构造了一个旋转矩形 …

ThinkServer SR658H V2服务器BMC做raid与装系统

目录 前提准备 一. 给磁盘做raid 二. 安装系统 前提准备 磁盘和系统BMC地址都已经准备好&#xff0c;可正常使用。 例&#xff1a; 设备BMC地址&#xff1a;10.99.240.196 一. 给磁盘做raid 要求&#xff1a; 1. 将两个894G的磁盘做成raid1 2. 将两块14902G的磁盘各自做…

7天用Go从零实现分布式缓存GeeCache(学习)(2)

参考:https://geektutu.com/post/geecache-day2.html // Cache 是一个 LRU 缓存&#xff08;最近最少使用缓存&#xff09;&#xff0c;它不是并发安全的。 type Cache struct { maxBytes int64 // 缓存的最大字节数 nbytes int64 …

Ajax 与 Vue 框架应用点——随笔谈

老式 在老式的技术中&#xff0c;一个网页通常由前端工程师直接使用 HTML、CSS、JavaScript 编写而成 这种方式的优点很明显&#xff1a;简单粗暴&#xff0c;方便工程师以简单的思维完成工作 当然&#xff0c;缺点也很明显&#xff0c;包括但不限于&#xff1a; 直接原生开发…

鸿蒙动画开发06——打断动画

1、前 言 UI界面除了运行动画之外&#xff0c;还承载着与用户进行实时交互的功能。当用户行为根据意图变化发生改变时&#xff0c;UI界面应做到即时响应。 例如用户在应用启动过程中&#xff0c;上滑退出&#xff0c;那么启动动画应该立即过渡到退出动画&#xff0c;而不应该…

vue2和vue3的区别详解

vue2 VS vue3 对比vue2vue3配置脚手架cmd命令行可视化方式创建脚⼿架组件通信props、$emit、provide、$arrts、EventBus等props、$emit、provide、inject、arrts等数据监听watch,computedwatch,watchEffect,computed双向绑定Object.definePropertyProxyAPI⽣命周期四个阶段befo…

Spring Cloud Eureka 服务注册与发现

Spring Cloud Eureka 服务注册与发现 一、Eureka基础知识概述1.Eureka两个核心组件2.Eureka 服务注册与发现 二、Eureka单机搭建三、Eureka集群搭建四、心跳续约五、Eureka自我保护机制 一、Eureka基础知识概述 1.Eureka两个核心组件 Eureka Server &#xff1a;服务注册中心…

用MVVM设计模式提升WPF开发体验:分层架构与绑定实例解析

MVVM&#xff08;Model-View-ViewModel&#xff09;是一种架构模式&#xff0c;广泛应用于现代前端开发&#xff0c;尤其是在微软的WPF&#xff08;Windows Presentation Foundation&#xff09;应用程序中。它旨在通过将视图&#xff08;UI&#xff09;与业务逻辑&#xff08;…

飞牛云fnOS本地部署WordPress个人网站并一键发布公网远程访问

文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress 前言 本文旨在详细介绍如何在飞牛云NAS上利用Docker部署WordPress&a…

论文笔记 SuDORMRF:EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION

SUDORMRF: EFFICIENT NETWORKS FOR UNIVERSAL AUDIO SOURCE SEPARATION 人的精神寄托可以是音乐&#xff0c;可以是书籍&#xff0c;可以是运动&#xff0c;可以是工作&#xff0c;可以是山川湖海&#xff0c;唯独不可以是人。 Depthwise Separable Convolution 深度分离卷积&a…