04_前端三大件JS

文章目录

  • JavaScript
  • 1.JS的组成部分
  • 2.JS引入
    • 2.1 直接在head中通过一对script标签定义脚本代码
    • 2.2创建JS函数池文件,所有html文件共享调用
  • 3.JS的数据类型和运算符
  • 4.分支结构
  • 5.循环结构
  • 6.JS函数的声明
  • 7.JS中自定义对象
  • 8.JS_JSON在客户端使用
    • 8.1JSON串格式
    • 8.2JSON在前端格式转化
  • 9.JS事件
    • 9.1常见事件
  • 10.DOM编程实现事件绑定
  • 11.BOM编程
  • 12.DOM编程
    • 12.1 DOM对象结构
    • 12.2对元素进行操作
    • 12.3 修改元素
  • Appendix

JavaScript

脚本语言

基于对象

弱类型

事件驱动 不需要经过web服务器就可以i对用户的输入做出相应

跨平台

和Java没有任何关系

1.JS的组成部分

在这里插入图片描述

2.JS引入

2.1 直接在head中通过一对script标签定义脚本代码

1.js如何声明函数?
function 函数名(){}		2.js函数如何和点击按钮绑定到一起?
按钮有一个属性叫做 onclick	单机行为ondbclick 双击行为3.如何弹窗提示?
可以在js函数中定义alert()函数,也就是经典的弹窗提示

在这里插入图片描述

2.2创建JS函数池文件,所有html文件共享调用

在这里插入图片描述

JS文件放到外部
所有html文件共享调用,
当使用的适合,直接调用即可

一些注意的点

1script标签要么就引入外部,要么使用内部,不要交叉使用
2一个html文件可以多个script文件
3script如果用于外部 引入js文件,中间不要有任何 内容
4标签调用js函数时,括号不能省略

在这里插入图片描述

3.JS的数据类型和运算符

        1.JS中的变量的声明 var str = "zhangsan"2.JS和scala一样都是弱类型语言3.JS常见的数据类型numberstringbooleanObject          //值可以是null,null的类型就是objfunction类型4.数据类型可以自动推理,var可以不声明age = 18    //自动得到类型是number5.判断变量的数据类型console.log(typeof age)

运算符和java保持一致,略

4.分支结构

几乎和java保持一致,但是有局部差异

if(condition){xxx
}else{xxx
}

和java中不一样的是:condition只要是非空字符串即为true

非空对象也是true

if ( ‘false’ ) //condition==true

if( new Object()) //true

if ( null ) //false

switch和Java一样

5.循环结构

和java几乎 一致除了foreach

java的foreach遍历

for(str : arr){

​ sout(str)

}

JS的foreach遍历

for(str in arr){

​ sout(str)

}

小结:仅将:改变了in即可

且str并不表示数组中的元素,而是表示数组中元素的索引

6.JS函数的声明

function funname(){}
var funname(){}
1没有修饰符
2没有返回值类型,也没有void,如果要返回,直接return即可
3没有异常列表
4调用时候,形参和实参可以不一致,但是如果发生,按位进行处理,后续相当于没有调用
5函数也可以作为一个方法传递给另外一个方法

在这里插入图片描述

5.函数可以作为参数传递

在这里插入图片描述

7.JS中自定义对象

js创建对象第一种方式

            1. new Object()2.{属性名:属性值,...,...,函数名:function(){}}--><script>// 1.创建一个对象var person = new Object()// 2.给对象创建属性person.name = "zhangsan"person.gae// 3.给对象添加方法person.eat=function(food){console.log(this.name + "eat"+ food)// 使用对象的属性,就用this即可,如果不用this,可能使用到变量而非对象属性// 使用的this调用属性必须非空,像这种情况age我就没法调用}

创建对象的第二种方式,简洁版

            var animal = {name:"cat",age,eat(food){return this.name+"eat"+food}}

8.JS_JSON在客户端使用

js放到客户端
java代码放到服务端
未来的设计模式:前端给后端 发送一些数据,后端反过来给前端相应一些数据 
前端后端都是用对象的方式管理数据
但是java对象和js对象构建不一致;
为了统一,设计了json格式;
因此对象通过序列化,反序列化操作通过json的格式在网络进行传输

在这里插入图片描述

8.1JSON串格式

在这里插入图片描述

8.2JSON在前端格式转化

前端网页JSON格式和JSON对象区别

//JSON串转化为一个对象
JSON_Obj = JSON.parse(JSNO_Str)

在这里插入图片描述

//JSON对象转化为JSON串

JSON.stringify()

9.JS事件

事件表示浏览器用户行为

我们一般在事件发生时,自动触发JS函数,我们称之为事件的绑定;

9.1常见事件

–鼠标事件

属性描述
用户点击某个对象onclick
双击对象ondbclick
鼠标指针移动目标上onmouseenter

事件属性可以设置多个函数

在这里插入图片描述

一个标签也可以使用多个事件 灵活

–键盘事件

事件属性
键盘开启onkeydown
键盘离开onkeyup

–表单事件

事件属性
获取焦点onfocus
失去焦点onblur
内容改变且失去焦点onchange
表单提交onsubmit
选取文本触发onselect
事件执行完执行脚本onload

小结:事件可以通过用户行为,直接拿到其value值,然后放回给后端程序做解析

在这里插入图片描述

联系:创建一个form表单,提交 表单,触发表单提交事件

10.DOM编程实现事件绑定

常规流程

通过id获取想要操作的标签

var btn = document.getElementById(“btn1”)

绑定一个事件为事件赋值(js函数)

btn.onclick = function(){}

整体代码

    <button id="btn1">按钮<script>    // 通过dom编程获取要操作的元素(通过id值获取想要操作的元素)var btn = document.getElementById("btn1")//绑定一个单机事件  ==  为其 某一个属性赋值,btn是一个标签,也是一个对象btn.onclick=function(){             //事件属性赋值就是赋值js函数,此处有一些匿名写法alert("这是一个弹窗")}</script></button>
如果将srcipt代码放到head中会报错;
原因是html文件顺序执行,btn1还没有进行定义,head中的代码就要进行绑定,肯定报错

因此引入onload事件:加载完成后再执行的js

在这里插入图片描述

html文件顺序执行,使用dom绑定需要考虑时机,什么时候标签已经定义了,什么时候能往上绑定,需要考虑时机,onload方法很好解决了此问题

onload事件简写

//head代码下
<script>window.onload=function(){xxx}
</script>

head代码给window对象的onload属性赋值,即可body中不需要定义onload事件。简化写法;

需求:通过点击一个事件后,使其按钮改变颜色

在这里插入图片描述

仅需修改绑定标签的style的背景色即可

dom通过 id获取的是标签对象,其任何属性都可以修改

11.BOM编程

browser boject model

bom由一系列对象组成,是访问控制修改浏览器的属性方法(通过window对象和一系列数学控制方法)

window对象及其各个属性

在这里插入图片描述

window对象的属性

location地址栏
history地址栏左边
document表浏览器html文件
console表示控制台
screen屏幕
navigator表示浏览器软件本身
sessionStorage表示会话及存储
localStorage长久存储

BOM编程常用api

            // 1.三种弹窗方式api      JSfun1 = function(){window.alert("allert弹窗")}fun2 = function(){var promptvalue = window.prompt("prompt弹窗,输入一些东西,prompt弹窗是有返回值的,且可以在js函数中接收")}fun3 = function(){var confirmvar = window.confirm("confirm弹窗,同理也是有返回值的")}fun4 = function(){window.setTimeout(function(){alert("5秒后弹窗")},5000)}funA = function(){window.history.forward()}funB = function(){window.history.back()}// 4.location对象访问url地址栏funC = function(){//修改地址栏地址       window.location.href="http://www.atguigu.com"}// 5.存储数据JS funtemp = function(){// 向sessionStorage存储数据    sessionStorage.setItem("keyA",123)}funlong = function(){// 向localStorage存储数据localStorage.setItem("longlocalstoragy",'sdjlasjd')}
     <!-- 1.三种弹窗方式api --><button onclick="fun1()" value="弹窗"> 弹窗</button><button onclick="fun2()" value=""> 弹窗</button><button onclick="fun3()" value="弹窗"> 弹窗</button><!-- 2.定时任务api --><button onclick="fun4()" value="弹窗"> 弹窗</button><a href="http://www.atguigu.com">尚硅谷</a><!-- 3.history实现上一页下一页跳转 --><button onclick="funA()" value="弹窗"> 上一页</button><button onclick="funB()" value="弹窗"> 下一页</button><hr><!-- 4.location对象访问url地址栏 --><button onclick="funC()" value=""> 尚硅谷地址</button><!-- 5.存储数据 --><hr><button onclick="funtemp()" value="这是一条临时数据"> 存储数据临时</button><button onclick="funlong()" value="这是一条长久数据"> 存储数据长久</button>

12.DOM编程

dom编程就是玩document,可以进行页面内容的修改;document属于bom编程,但是其功能强大,所以独立出来专用作为一个DOM编程

未来html文件放到服务器上,就无法将html源代码进行修改,所以动态使html文件发生变化需要借助JS的DOM编程

在这里插入图片描述

客户端不能改变服务器的html文件,但是可以通过改变document内容从而,改变在客户面前的展示形态

12.1 DOM对象结构

dom结构是树形结构(逻辑结构)

整个document文档就是一个树形文档;

document就是window的一个属性

在这里插入图片描述

DOM将每一个标签称之为node

node又具有不同的属性如下

element标签
attribute属性
text双标签中间的文字

12.2对元素进行操作

–获取元素

–操作元素样式,文本,增删等

            // 1.获取docomentvar doc = window.document// 2.通过document修改值// var value  = doc.getElementById("username")// alert(value)// 3.根据标签名获取// var value = doc.getElementsByTagName("input")// for (idx in value){//     // alert(value[idx])//     // console.log(value[idx])//     // print(value[idx])// }// 4.根据name获取var value = doc.getElementsByName("aaa")for(idx in value){console.log(value[idx])}// 5.根据class获取元素var value = doc.getElementsByClassName("")// 6.根据父元素获取所有子元素var div01 = doc.getElementById("div01")var childrens =  div01.childrenfor(idx in childrens){console.log(value[idx])}// 7.通过子元素获取父元素var value = doc.getElementById("address")var par  = value.parentconsole.log(par)// 8.获取同级别前后元素div01.previousElementSibling    //获取前面的第一个元素div01.nextElementSibling    //获取后面的第一个元素<body><div id="div01"><input type="text" id="username" name="aaa"><input type="text" id="password" name="aaa"><input type="text" id="address"></div><input type="text"> <br><input type="button" onclick="fun01()" value="根据id获取指定元素" id="btn01"><input type="button"><input type="button"><input type="button"></body>

注意点:父元素获取子元素,子元素相对于父元素是一个属性,子元素获取父元素同理

12.3 修改元素

    <script>function changeAttribute(){var in1 = document.getElementById("in1")// 1.对元素进行修改     元素.属性名=xxxin1.type = "button"in1.value = "changeValue"in1.style.backgroundColor= "red"// 原始样式中 名带"-"符号 要转换为驼峰式background-Color// 2.修改标签中间文本.nnerText      .innerHTMLin1.innerText = "innerText"     //button不受text影响in1.innerHTML = "innerText"     //button不受text影响/*.nnerText       仅识别标签中文本.innerHTML      识别标签中文本+识别标签*/}</script>

注意点:修改样式,原始样式中含有“-”那么js函数中不要带,且使用驼峰进行修改

Appendix

1.prompt方法,带有返回值的弹窗

var month = prompt(“请输入月份”)

在这里插入图片描述

2.经典弹窗提示函数alert()

3.js中将字符串转化为number

Number.parseInt(“str”) //和java异曲同工

4.可以获取函数调用实参

arguments参数

console.log( arguments )

在这里插入图片描述

5.JSON.stringify()将JSON对象转化为字符串

6.JSON.parese()将JSON串,转化为JSON对象

7.JS的数组和java有所不同

具体来说就是js使用的是集合,长度可变,长度api为length而非size

在这里插入图片描述

其各种api和java集合保持一致

8.弹窗的三种方式

alert消息提示框
prompt信息输入框+提示
confirm信息确认框

在这里插入图片描述

9.常见错误:

引入js函数未带小括号

button标签的value值不改变框的名字,只有文本能够表示其文字

在这里插入图片描述

  1. 关于弹窗,prompt,confirm都是有返回值的,其返回值可以在js函数中接收

11.bom方法很好用,其所有的window前缀都可以省略

12.sessionStorage.setItem(key,value)此方法进行临时存储数据;

键,必须是String类型

值,任意类型

存储位置如下

在这里插入图片描述

在这里插入图片描述

13.本人认为JS的方法形参就是为了传递 标签信息目的是往后端进行数据交互

  1. dom编程中,根据所有父元素获取所有子元素,那个childern 没有括号,其不是方法,只是父类的一个属性

    var div01 = doc.getElementById("div01")var childrens =  div01.childrenfor(idx in childrens){console.log(value[idx])}
    

15.原始样式中 名带"-"符号 要转换为驼峰式background-Color

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

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

相关文章

弘君资本股市行情:股指预计保持震荡上扬格局 关注汽车、银行等板块

弘君资本指出&#xff0c;近期商场体现全体分化&#xff0c;指数层面上看&#xff0c;沪指一路震动上行&#xff0c;创出年内新高&#xff0c;创业板指和科创50指数体现相对较弱&#xff0c;依然是底部震动走势。从盘面体现上看&#xff0c;轮动依然是当时商场的主基调&#xf…

IBERT眼图扫描(高速收发器八)

前文讲解了GTX的时钟及收发数据通道的组成&#xff0c;之后讲解了眼图、加重、均衡等原理及原因&#xff0c;本文通过xilinx提供的IBERT IP完成实际工程的眼图扫描&#xff0c;确定加重和幅值调节的参数。 1、回环模式 在此之前&#xff0c;需要了解一下GTX的回环模式。如果板…

【字典树(前缀树) 字符串】2416. 字符串的前缀分数和

本文涉及知识点 字典树&#xff08;前缀树) 字符串 LeetCode 2416. 字符串的前缀分数和 给你一个长度为 n 的数组 words &#xff0c;该数组由 非空 字符串组成。 定义字符串 word 的 分数 等于以 word 作为 前缀 的 words[i] 的数目。 例如&#xff0c;如果 words [“a”,…

【list】list库介绍 + 简化模拟实现

本节博客先对list进行用法介绍&#xff0c;再在库的基础上简化其内容和形式&#xff0c;简单进行模拟实现&#xff0c;有需要借鉴即可。 目录 1.list介绍1.1 list概述1.2相关接口的介绍 2.简化模拟实现3.各部分的细节详述3.1结点3.2迭代器细节1&#xff1a;迭代器用原生指针还是…

【Codesys】-执行第三方程序,或Windows脚本

该记录旨在解决RTE作为第一个Windows的一个exe程序不能调用其他程序的问题。 可以实现:在PLC界面打开第三方程序、在PLC界面关闭本机Windows操作系统 首先添加依赖库-SysProcess,3.5.17.0 然后在程序里执行相应的指令&#xff0c;该指令可以被Windows识别为类似于执行Bat文件…

国产操作系统上使用rsync恢复用户数据 _ 统信 _ 麒麟 _ 中科方德

原文链接&#xff1a;国产操作系统上使用rsync恢复用户数据 | 统信 | 麒麟 | 中科方德 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在国产操作系统上使用rsync备份并还原用户数据的文章。rsync是一款功能强大的文件同步和备份工具&#xff0c;广泛用于Linux系…

河南乙级道路与桥梁资质年审材料准备要点解析

河南乙级道路与桥梁资质年审材料准备要点解析如下&#xff1a;河南宽信权经理 一、企业基本情况材料 营业执照副本复印件&#xff1a;确保复印件清晰、完整&#xff0c;并加盖企业公章。 企业章程&#xff1a;提供最新的企业章程&#xff0c;并加盖企业公章。此材料需反映企业…

代码随想录——从前序与中序遍历序列构造二叉树(Leetcode105)

题目链接 递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNode left, TreeNode right) {* …

Linux(三)

Linux&#xff08;三&#xff09; Linux网络配置管理网络基础知识 IP地址A类 由1个字节网络地址3个字节主机地址B类 由2个字节网络地址2个主机地址C类 由3个字节网络地址1个主机地址D类:主要用于组播E类:为将来使用保留 子网掩码子网掩码作用网关DNS服务器 Linux用户管理用户的…

linux创建离线yum源给局域网机器使用

适用场景&#xff1a;在封闭的内网环境中&#xff0c;无法使用互联网进行安装各种rpm包的时候&#xff0c;离线yum源可以解决大部分问题&#xff0c;配置号后可直接使用yum进行安装包 1.准备好镜像源ISO&#xff1a; 例如以下示例&#xff0c;具体可参考自己的系统进行下载&a…

新书推荐:7.3 for语句

本节必须掌握的知识点&#xff1a; 示例二十四 代码分析 汇编解析 7.3.1 示例二十四 ■for语句语法形式&#xff1a; for(表达式1;表达式2;表达式3) { 语句块; } ●语法解析&#xff1a; 第一步&#xff1a;执行表达式1&#xff0c;表达式1初始化循环变量&#xff1b; …

【错题集-编程题】kotori 和迷宫(BFS / DFS)

牛客对应题目链接&#xff1a;kotori和迷宫 (nowcoder.com) 一、分析题目 迷宫问题的扩展。 二、代码 #include <iostream> #include <cstring> #include <queue>using namespace std;const int N 35; int x1, y1; // 标记起点位置 int n, m; char arr[N][…

电机控制系列模块解析(23)—— 同步机初始位置辨识

一、两个常见问题 为什么感应电机&#xff08;异步机&#xff09;不需要初始位置辨识&#xff1f;&#xff08;因此感应电机转子磁场在定子侧进行励磁&#xff0c;其初始位置可以始终人为定义为0&#xff09; 为什么同步磁阻电机需要初始位置辨识&#xff1f;&#xff08;因为…

五分钟搭建一个Suno AI音乐站点

五分钟搭建一个Suno AI音乐站点 在这个数字化时代&#xff0c;人工智能技术正以惊人的速度改变着我们的生活方式和创造方式。音乐作为一种最直接、最感性的艺术形式&#xff0c;自然也成为了人工智能技术的应用场景之一。今天&#xff0c;我们将以Vue和Node.js为基础&#xff…

【软件设计师】计算机组成原理

1、数据的表示 1.1 进制转换 整型有4种进制形式&#xff1a; 1.十进制&#xff08;D&#xff09;&#xff1a; 都是以0-9这九个数字组成&#xff0c;不能以0开头。 2.二进制&#xff08;B&#xff09;&#xff1a; 由0和1两个数字组成。 3.八进制&#xff08;O&#xff09;&am…

嵌入式进阶——数码管

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 数码管结构移位寄存器原理图移位寄存器数据流程移位寄存器控制流程移位寄存器串联实现数码管显示 数码管结构 共阴与共阳 共阳数码…

linux centos循环ping网段ip

循环ping&#xff0c;检测ip是否可用&#xff0c;ping通为正在使用yes&#xff0c;no为不通 vim test.sh#!/bin/bash ip"192.168.1."echo "ping log:" > ./ping.txt for i in {1..128} doping -c 1 -w 1 -W 1 $ip$i | grep -q "ttl" &&a…

Android跨进程通信--Binder机制及AIDL是什么?

文章目录 Binder机制Binder是什么&#xff1f;Binder相对于其他几种跨进程通信方式&#xff0c;有什么区别&#xff1f;谈一下 Binder IPC 通信过程&#xff1a;具体的通讯过程是什么&#xff1f;Binder如何处理发送请求与接收请求?Binder是通过什么方式来进行内存映射的&…

linux入门到精通-第十九章-libevent(开源高性能事件通知库)

目录 参考什么是libevent应用核心实现libevent的地基event_base等待事件产生&#xff0c;循环监听event_loop退出循环监听event_base_loopexit创建事件工作流程 安装一&#xff08;源码安装&#xff0c;推荐&#xff09;现在源码配置编译安装验证安装 安装二&#xff08;可能因…

KingbaseES数据库merge语法

数据库版本&#xff1a;KingbaseES V008R006C008B0014 简介 MERGE 语句是一种用于数据操作的 SQL 语句&#xff0c;它能够根据指定的条件将 INSERT、UPDATE 和 DELETE 操作结合到单个语句中。其主要作用是在目标表和源表之间进行数据比较和同步&#xff0c;根据条件的匹配情况来…