04_前端三大件JS

news2024/9/23 19:25:09

文章目录

  • 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

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

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

相关文章

2024年zoom会议受主持人账户限制影响,无法加入会议。(错误代码13215)

问题一、老师&#xff0c;你好!我的zoom账户&#xff0c;刚开始注册后可以登录&#xff0c;但是现在登录不了了。代码1044。其次&#xff0c;我如果通过网页版设置会议号&#xff0c;别人也加入不了。代码13215。 这两个问题一般会同时出现。登录失败。(错误代码:1044)一般是创…

如何自动识别图片上的文字?一键转文本方法分享

如何自动识别图片上的文字&#xff1f;自动识别图片上的文字&#xff0c;即OCR技术&#xff0c;已经取得显著进步&#xff0c;并在多个领域得到广泛应用。它可以极大地提高我们处理文本信息的效率&#xff0c;无论是从文档扫描、图片识别&#xff0c;还是到自动翻译和数据录入&…

【干货】如何用SaaS商城助力全球化布局

在全球化的大潮中&#xff0c;企业如何迅速而有效地拓展海外市场&#xff0c;成为了众多企业家和管理者关注的焦点。随着技术的发展&#xff0c;SaaS&#xff08;软件即服务&#xff09;商城作为一种创新的商业模式&#xff0c;为企业全球化布局提供了强有力的支持。saas商城如…

Java整合EasyExcel实战——2 导出复杂表头

详情代码 实体类 Data public class ComplexHeadData {ExcelProperty({"主标题", "字符串标题"})private String string;ExcelProperty({"主标题", "日期标题"})private Date date;ExcelProperty({"主标题", "数字标…

学习云安全?就来亚马逊云科技中国峰会安全动手实验专场

一年一度的云计算春晚“亚马逊云科技中国峰会”明天就正式开始了&#xff0c;大会的注册将在5月28日今天晚18:00前停止报名&#xff0c;还没有报名的小伙伴请抓紧了&#xff01;可以通过下方二维码注册大会。 小李哥也来提前带大家了解下本次大会中云安全相关的动手实验和活动&…

【NumPy】全面解析NumPy的sort函数:高效排序算法与应用技巧

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

基于瑞萨RA6M5的自控衣橱

1. 主控转接板原理图和PCB设计 2. 屏幕界面设计 3. 程序设计 4. QT设计 QT设计&#xff0c;读取MQTT数据&#xff0c;在QT上显示衣橱内部的温度&#xff0c;湿度情况&#xff0c;且能够控制衣橱的开关门&#xff0c;开关灯等。 5. 实物演示 瑞萨

Scala编程基础3 数组、映射、元组、集合

Scala编程基础3 数组、映射、元组、集合 小白的Scala学习笔记 2024/5/23 14:20 文章目录 Scala编程基础3 数组、映射、元组、集合apply方法数组yield 数组的一些方法映射元组数据类型转换求和示例拉链集合flatMap方法 SetHashMap apply方法 可以new&#xff0c;也可以不new&am…

大学搜题软件音乐类?分享三个支持答案和解析的工具 #微信#媒体

高效的学习工具可以帮助我们提高记忆力和理解能力&#xff0c;使知识更加深入人心。 1.彩虹搜题 这是个微信公众号 一款专门供全国大学生使用的查题神器!致力于帮助大学生解决学习上的难题,涵盖了大学生学习所需的学习资料。 下方附上一些测试的试题及答案 1、甲、乙合伙开…

算法工程师需要学习C++的哪些知识?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;以下是算法工程师需要学习的一些…

【机器学习】机器学习基础概念与初步探索

❀机器学习 &#x1f4d2;1. 引言&#x1f4d2;2. 机器学习概述&#x1f4d2;3. 机器学习基础概念&#x1f389;2.1 机器学习的分类&#x1f389;2.2 数据预处理&#x1f308;数据清洗与整合&#x1f308; 特征选择和特征工程&#x1f308;数据标准化与归一化 &#x1f4d2;4. …

K8s service 进阶

文章目录 K8s service 进阶Service 工作逻辑Service 具体实现Service 资源类型ClusterIPNodePortLoadBalancerExternalName Service 与 EndpointEndpoint 与 容器探针自定义Endpoint Service 相关字段sessionAffinityexternalTrafficPolicyinternalTrafficPolicypublishNotRead…

揭秘《庆余年算法番外篇》:范闲通过贝叶斯定理找到太子火烧史家镇的证据

剧情背景 在《庆余年2》中史家镇是李云睿和二皇子向北齐走私的重要通道&#xff0c;太子派人把史家镇烧成灰烬&#xff0c;最后嫁祸于二皇子&#xff0c;加大范闲对二皇子的恨意&#xff0c;坐收渔翁之利&#xff0c;意图销毁所有证据。范闲痛心疾首&#xff0c;但是马上调整&…

文章一:华为晟腾310b的Atlas 200 AI加速模块进行视频的AI分析,硬件使用的是Oringepi alpro(推荐环境安装)

1&#xff0c;首先本次我们使用MindxSDK进行视频分析 2&#xff0c;环境安装 主要还是参考官方的安装步骤&#xff0c;安装步骤链接 2.1,安装NPU&#xff0c;检查NPU安装情况 默认的官方的ubuntu是自带安装NPU的driver的&#xff0c;只需要检查一下版本就可以了。 mxVisio…

两种现货白银资金的管理方法 你喜欢哪一种?

做现货黄金交易&#xff0c;除了投资者的盘感、市场分析技巧等因素以外&#xff0c;其实对于现货白银资金的管理也是很重要的。下面我们就来介绍两个现货白银资金的管理方法&#xff0c;主要是开仓和加仓方面的。 按照投资者的操作风格&#xff0c;我们可以将现货白银资金管理的…

防火墙基础基础篇:NAT转发功能之——Easy IP方式详解

防火墙基础基础篇&#xff1a;NAT转发功能之——Easy IP方式详解 1. 概念 Easy IP 是一种简化版的动态NAPT&#xff08;Network Address and Port Translation&#xff09;技术。在Easy IP中&#xff0c;我们只使用一个公网IP地址&#xff0c;无需建立公有IP地址池。这个公网…

拼多多买家关注店铺 id 导出商品收藏导出查看全店spu_id

拼多多买家账号导出关注列表店铺 id、商品 id 登录网页端拼多多界面&#xff0c;清缓存后 F12加载数据&#xff0c;下滑界面自动加载缓存&#xff1b; 查看商品收藏 登录网页端拼多多界面&#xff0c;清缓存后 F12加载数据&#xff0c;下滑界面自动加载缓存&#xff1b; 一…

现在股票交易佣金标准最低是万0.854,低佣金炒股开户方式和流程!

股票交易佣金的最低标准是万分之0.854&#xff1b; 证券公司股票交易佣金默认是万分之3&#xff1b; 无门槛的股票交易佣金是万分之1&#xff1b; 万分之0.854的佣金要求投资者资产达到一定规模&#xff0c;不同的证券公司规定不一样。 如果没有经过证券公司客户经理协商开…

Java时间类--JDK8

为什么JDK8会又新增时间相关类呢&#xff1f; ① JDK7的时间对象如果需要比较大小的话&#xff0c;必须都先转换成毫秒值&#xff1b;JDK8则不需要&#xff0c;可以直接比较。 ② JDK7的时间对象可以修改&#xff0c;在多线程环境下就会导致数据不安全&#xff1b;JDK8不能修改…

Linux 进程相关概念

用以下指令查找正在运行的进程&#xff0c;并使用 grep 过滤出包含 "int" 的行。 "ps -aux" 显示当前系统上所有用户的进程列表&#xff0c;而 grep 命令则筛选出包含 "int" 的行。 ps -aux|grep int p代表process进程 1.什么是程序&#xff…