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常见的数据类型
            number
            string
            boolean
            Object          //值可以是null,null的类型就是obj
            function类型
        4.数据类型可以自动推理,var可以不声明
        age = 18    //自动得到类型是number
        5.判断变量的数据类型
        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      JS
            fun1 = 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.获取docoment
            var 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.children

            for(idx in childrens){
                console.log(value[idx])
            }

            // 7.通过子元素获取父元素
            var value = doc.getElementById("address")
            var par  = value.parent
            console.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.对元素进行修改     元素.属性名=xxx
            in1.type = "button"
            in1.value = "changeValue"
            in1.style.backgroundColor= "red"
            // 原始样式中 名带"-"符号 要转换为驼峰式background-Color

            // 2.修改标签中间文本.nnerText      .innerHTML
            in1.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.children
    
                for(idx in childrens){
                    console.log(value[idx])
                }
    

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

#12松桑前端后花园周刊-SolidStart、Vercel融资、Angular18、Nextjs15RC、p5.js、ChromeDevTools引入AI

⚡️行业动态 SolidStart 1.0 元框架发布 Solidjs 核心团队发布其元框架 SolidStart 1.0 正式版&#xff0c;其特点如下&#xff1a;基于文件系统的路由&#xff1b;支持SSR、流式SSR、CSR、SSG渲染模式&#xff1b;通过代码分割、树摇和无用代码删除构建优化&#xff1b;基于…

LabVIEW超快激光微纳制造系统设计

LabVIEW超快激光微纳制造系统设计 在当前的制造行业中&#xff0c;精密加工技术的需求日益增长&#xff0c;尤其是在微纳尺度上。超快激光制造技术&#xff0c;以其独特的加工精度和加工效率&#xff0c;成为了精密加工领域的重要手段。然而&#xff0c;大多数超快激光制造系统…

05.爬虫---urllib与requests请求实战(GET)

05.urllib与Requests请求实战GET 1.Urllib模块2.Requests模块3.对比4.实战 1.Urllib模块 Urllib官方文档 https://docs.python.org/3/library/urllib.request.html urllib是Python的标准库&#xff0c;用于发送HTTP请求和处理响应。它提供了urlopen、Request等函数和类来与网络…

C++初阶学习第九弹——探索STL奥秘(四)——vector的深层挖掘和模拟实现

string&#xff08;上&#xff09;&#xff1a;C初阶学习第六弹——探索STL奥秘&#xff08;一&#xff09;——标准库中的string类-CSDN博客 string&#xff08;下&#xff09;&#xff1a;C初阶学习第七弹——探索STL奥秘&#xff08;二&#xff09;——string的模拟实现-CS…

GVM: Golang多版本管理利器

本文介绍了 Go Version Manager 的功能和使用方法&#xff0c;介绍了如何通过 GVM 在系统上安装和管理多个 Go 语言版本。原文: GVM: Go Version Manager, for Golang manage multiple versions Go 版本管理器&#xff08;GVM&#xff0c;Go Version Manager&#xff09;是一款…

X-CSV-Reader:一个使用Rust实现CSV命令行读取器

&#x1f388;效果演示 ⚡️快速上手 依赖导入&#xff1a; cargo add csv读取实现&#xff1a; use std::error::Error; use std::fs::File; use std::path::Path;fn read_csv<P: AsRef<Path>>(filename: P) -> Result<(), Box<dyn Error>> {le…

让大模型变得更聪明:人工智能的未来发展之路

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

slam14讲(第9,10讲 后端)

slam14讲&#xff08;第9&#xff0c;10讲 后端&#xff09; 后端分类基于滤波器的后端线性系统和卡尔曼滤波非线性系统和扩展卡尔曼滤波 BA优化H矩阵的稀疏性和边缘化H矩阵求解的总结 位姿图优化公式推导 基于滑动窗口的后端个人见解旧关键帧的边缘化 后端分类 基于滤波器的后…

融汇11款AI工具构建完美应用

本文将为您介绍25个开源项目&#xff0c;分为上下两篇以便您融汇它们来制作自己的AI应用。人工智能&#xff08;AI&#xff09;应用在近年来得到了长足的发展。从语音助手到软件开发&#xff0c;人工智能已在我们的生活中无处不在&#xff0c;并得到了广泛应用。 如您所见&…

免费且非常火的日程管理软件:飞项

一、简介 1、在日常繁忙的工签中&#xff0c;是否事情一大堆却记不住&#xff1f;系统自带的日历用着却是不方便&#xff0c;不顺手&#xff0c;提醒不及时&#xff1f;待办、打卡、记事乱七八糟的混在一起&#xff0c;关键时候找不到&#xff1f;市面上的日程管理软件那么多&a…

Spring框架温习

Spring 特征 Spring是一个全面的、企业应用开发一站式的解决方案&#xff0c;贯穿表现层、业务层、持久层。但是 Spring仍然可以和其他的框架无缝整合。 Spring 特点&#xff1a; 轻量级、控制反转、面向切面、容器、框架集合 Spring 核心组件&#xff1a; Spring 常用模块…

简单的基于信号处理的心电信号ECG特征波分割方法(MATLAB)

正常的心电图中&#xff0c;每个心跳周期内包含三个主要的特征波&#xff1a;&#xff30;波、QRS波和&#xff34;波&#xff0c;如下图所示。心电特征波能够反映心脏的生理状态信息&#xff0c;通过对其形状、幅值和持续时间的分析&#xff0c;可以用来辅助诊断心血管疾病。对…

异相(相位不平衡)状态下的合成器效率分析-理论与ADS仿真

异相&#xff08;相位不平衡&#xff09;状态下的合成器效率分析-理论与ADS仿真 12、ADS使用记录之功分器设计中简单介绍了威尔金森功分器的设计方法。一般来讲&#xff0c;功分器反过来就能作为合路器使用&#xff0c;在输入信号相位一致的情况下&#xff0c;各种合路器的效率…

港股:并不意外的获利了结

中金公司表示&#xff0c;风险偏好驱动的反弹已经较为充分&#xff0c;分歧和获利了结也不意外。接下来或在当前水平震荡盘整&#xff0c;等待更多催化剂。 在持续一个月的大涨后&#xff0c;港股市场上周出现明显回调。此前我们多次提示&#xff0c;市场已经超买&#xff0c;情…

HTML静态网页成品作业(HTML+CSS)——杭州西湖景点介绍网页(3个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有3个页面。 二、作品演示 三、代…

聊聊ChatGPT的本质

这是鼎叔的第九十八篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 阶段性总结下我对ChatGPT的基础理解&#xff0c;算是一篇学习思考笔记吧。其中难免有很多不准确的&#xff0c;或过于简略的地方&#xff0c;将来再迭代学习。 OpenAI做ChatGPT的底层逻辑…

FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流

RTMP Streamer是一个安卓手机端的开源RTMP直播推流框架&#xff0c;可用于RTMP直播和RTSP直播&#xff0c;其升级版还支持SRT直播&#xff08;腾讯视频云就采用SRT协议&#xff09;。RTMP Streamer支持的视频编码包括H264、H265、AV1等等&#xff0c;支持的音频编码包括AAC、G7…

如何从清空的回收站中恢复已删除的Excel文件?

“嗨&#xff0c;几天前我删除了很多没有备份的Excel文件。回收站已清空。当我意识到我犯了一个大错误时&#xff0c;所有的Excel文件都消失了&#xff0c;回收站里什么都没有。清空回收站后是否可以恢复已删除的 Excel 文件&#xff1f; 回收站是一种工具&#xff0c;可让您在…

爬山算法教程(个人总结版)

背景与简介 爬山算法&#xff08;Hill Climbing Algorithm&#xff09;是一种用于解决优化问题的启发式搜索方法。它是一种局部搜索算法&#xff0c;通过不断尝试从当前解出发&#xff0c;在其邻域内寻找更优的解&#xff0c;直到无法找到更优解为止。该算法得名于其类似于登山…

FullCalendar日历组件集成实战(7)

背景 有一些应用系统或应用功能&#xff0c;如日程管理、任务管理需要使用到日历组件。虽然Element Plus也提供了日历组件&#xff0c;但功能比较简单&#xff0c;用来做数据展现勉强可用。但如果需要进行复杂的数据展示&#xff0c;以及互动操作如通过点击添加事件&#xff0…