2021-03-02

javascrpit

基础语法

1.语句:通常一行代码如果添加了分号 认为这是一条语句使用分隔

2.变量:目的:通过一个名字 表示一个可以改变的值

定义:var变量名=值;var关键字  不赋值  var变量名

什么是关键字? 语言本身提供的名字

有固定的意义  var  如var就是定义变量的意思


语言本身 提供了很多关键字  var  for  while  if static  let

变量名:  开发者起的一个名字


注意:不能使用关键字  定义变量名 

不能数字开头

不能以特殊符号开头

定义变量要有意义    驼峰命名法 

                                  下划线命名法


意义:变量名:开发者起的一个名字    外号  标记


值: 具体内容:数字

文字

数组

对象

由名字表示了后面的值  把右侧的值赋值 (通过=赋值)给左侧的名字

3.注释:单行注释 ctrl+/

              多行注释 ctrl+shift+/

4.调试


引入方式:

script

var  a=20

/script


script src=""  /script


基础语法

运算符

算数运算符(必须数字与数字之间运算):+ - * / %

数据类型

number  数字类型  (包含浮点和整数)

string    字符串类型  双引号或者单引号包裹的都是字符串

boolean  波尔类型  :true 对

                                  false 错

array      数组

object    对象

function    函数

数据转换的类型


字符串 转数字:转整数parselnt()

                          转浮点parsefloat()备注:如果使用小数的话不要直接使用小数

精度丢失:非要使用小数的话:1.乘以100(精确的级别)倍2.运算完毕  在还原倍数

输入内容:prompt

使用代码 输出变量  没有实际意义 只是帮咱们在控制台  输出一下变量

console.log(a);

      输出

console.log(a);//日志

console.warn(a);//警告

console.info(a);//详细信息

调试方式

1.console.log(a)//日志

2.断点调试(至少是半个大神级别才会)  在程序大点 阻止继续执行

断点调试的流程:1.先通过经验  定位到  大概错误位置2.打开浏览器中的source

3.点击要调试的文件(js)

4.在怀疑有错误的地方 点个点(打断点)

5.程序重新运行  会在断点位置停止->鼠标移动到断点上面的变量->就会显示变量的值

6.如果继续排错 可以多打几个断点通过播放键调到下一个断点通过下一步,执行下一部代码

复合运算符

+=:var a=10;

      var b=20;

      a=a+b;

      a+=b;

-=

*=

/=

%=

++:给自己增加一个1

--:给自己减少一个1


比较运算符

就是一个boolean类型的值 

>

<

>=

<=

== :忽略数据类型  1与“1”认为是相同的

===  严格查看数据类型  1与“1”认为不相同  必须类型与值相同

!=    1“1”    假的

!==    1“1”  真的

逻辑运算符

三元运算

三元运算(三目运算)经常代替  if else


if(睡觉){

做梦}

else{

掌握三元运算}


三元运算

睡觉? 做梦:掌握三元运算

条件?满足执行:不满足执行


分支结构

if(条件){}

if(条件){}else{}

if(条件){}else if{}else{}

switch  选择其中的某一个点子(case )

结构:switch(变量)

          case 值1;

                        break;(如果不加break 程序会继续向下执行)

          case 值2;

                        break;

default:


循环

知道循环次数  for 

结构:for(var i=0 (初始化  变量)i<5(循环条件);i++(更改变量的值))

不知道循环次数  whilezz


continue

跳过本次循环  但是在continue前面不会跳过



while  (条件){循环体}

do  while  不管条件满不满足 先执行一次循环

break  跳出循环



函数

四种类型:有返回值  :带参数    不带参数

                  无返回值 :带参数    不带参数


函数封装  是一种编程思想


组成:  声明函数  function  函数名(){}

            调用函数  函数名


作用域: 概念:变量起作用的范围

              局部变量  :  只在定义的函数体里面,在函数体外面是不可以使用的

              全局变量:

              自执行函数:解决作用问题  防止多个js文件间的  变量互影响

返回值:带返回值的函数是什么?    返回值是什么  函数就是什么      1      function  x(){return  1}


return值;


return放到函数里面  加值是有返回值的函数

                                不加值 就是跳出函数



日期对象

Date

创建日期对象:

获取当前日期  var  date  =  new  date();{通过类名} 

new通过类名  创建对象的关键字

Date  日期类

通过日期类—》创建一个当前的日期对象

日期包含:  年  月  日 周 时  分  秒  毫秒

date.getfullyear;  年

date.getmonth    月

date.gedate  日




时间戳

1970年  某个时间的 毫秒数



时间戳转日期对象:  new  date(1288336112000) 

                                  var  date=new date()

                                  date.settime(1288336112000)


日期转时间戳      var date=newdate()

                            var t=date.gettime()


设置日期  var  date =newdate()


获取dom元素

查询dom元素

1.document.queryselector("选择器的名字"){查找到的是第一哥元素}

2.document.queryselector("选择器的名字"){查询到的是一个伪数组}


创建dom元素

1.创建dom元素  var  变量名=document.createelement(“标签名”)



事件监听

1.添加监听事件    dom.addeventlistener("事件名",函数)

2.移出监听事件    dom.remove事件里面的技巧

1.阻止元素的默认行为:event.preventdefault();

如:去掉a标签刷新或跳转页面的功能

2.事件冒泡或捕获

事件冒泡:从内向外触发

事件捕获:从外向内触发


JSON对象  一种数据格式  没有语言限制  格式:{“key键”:值,“key键”:[ 1,2,3 ] }

{

"username":"xiaoming",

"age":99,

"friends":["xiaohua","xiaolv","小猪"]

}

XML  数据格式  没有语言限制  类似于html格式


//复制元素  cloneNode()

如://复制dom元素

if(left%50===0||top%50===0){

varp =person.cloneNode();

document.body.append(p);

p.style.opacity=Math.random();

}

}



一、鼠标事件    点击事件 onClick dom.onClick = function (事件对象){  }

移动事件  onmuosemove

鼠标的事件对象 :pageX  光标在页面x的位置

pageY  光标在页面y的位置

//鼠标事件

document.body.onmousemove=function(event) {

console.log(event);

//鼠标移动到页面的位置

varleft = event.pageX;

vartop = event.pageY;

person.style.top= top+"px";

person.style.left= left +"px";


//复制dom元素

if(left%50===0||top%50===0){

varp =person.cloneNode();

document.body.append(p);

}

}


鼠标移入事件


二、键盘事件    按下键盘触发  onkeydown dom.onkeydown = function(事件对象){  }

当键盘事件触发的时候会获得一个事件对象(event)

例:

document.body.onkeydown=function(event) {

console.log(event);

}

code、keycode区分按下是哪个键

按键抬起时触发  onkeyup

三、状态事件

获取编译完成的样式(css里面写的样式)  :getComputedStyle(dom);


jquery

简介

JavaScript函数库

轻量级框架

不是由浏览器去开发的,而是由其他开发者开发的,不是官方的框架 就叫做第三方框架


内容

HTML 元素选取

HTML 元素操作

CSS 操作

HTML 事件函数

JavaScript 特效和动画

HTML DOM 遍历和修改

AJAX

Utilities

包管理工具

下载及管理第三方的库

分类  bowerBower是一个客户端技术的软件包管理器,它可用于搜索、安装和卸载如JavaScript、HTML、CSS之类的网络资源


node.js  可以帮我们安装卸载工具

安装  一直下一步

基本使用  1.搜索工具 :npm search  xx

2.安装工具:局部安装  只安装到本项目中  npm  i  xx

全局安装  会添加到环境目录中  可以在所有项目中使用《工具》    npm  i  xx  -g

3.卸载工具:npm  uninstall  xx

npm服务器在境外  下载内容比较慢  就可以选择使用淘宝镜像


//查找dom元素

varbox=$(".box")

//创建dom元素

varimg=$("img")

varsoan=$("yahaha");



//清空dom元素

// dom.empty()

//如box.empty

//删除dom

//dom.remove()

//$(".image").remove()

//子元素放到父元素

varp=$("

hhhh

")

$("body").append(p)


varp2=$("

");

p2.text("哈哈");

$("body").append(p2)

p2.html("呼哈哈哈")



p2.css("font-size","40px")



分类

鼠标事件

click

dblclick

mouseenter

mouseleave

hover

键盘事件

keypress

keydown

keyup

表单事件

submit

change

focus

blur

文档/窗口事件

load

resize

scroll

unload


显示隐藏

显示

$(selector).show(speed,callback);

隐藏

$(selector).hide(speed,callback);


淡入淡出

fadeIn()

fadeOut()

fadeToggle()

fadeTo()



动画$(selector).animate({params},speed,callback);



事件里

事件监听:on  添加事件监听      dom.no(事件名,监听者函数)

off  关闭事件监听    关闭后事件不会再去响应  dom.off(事件名,监听者函数)


选择器“:

$("*")  通配符选择器

$("this") 把dom元素转换成jquery对象


jQuery转换成dom:jQuery【0】


dom转换成jQuery:$(dom)


交集选择器:  $("p.intro")

并集选择器:  $("p,intro")

后代选择器:$("p .intro")

子类选择器:$("p>.intro)

选取第一个元素(只要是第一个就可以找到):$("p:first")

选取最后一个元素(只要是最后一个可以找到)$("p:last")

选取父元素中的第一个子元素:$("ul li:first-child")

查找的是所有包含这个属性名的元素:$("属性名")

查找指定属性名及属性值的元素:$("【属性名=属性值】")

查找指定属性名不是某个属性值的元素:$("【属性名!=属性值】")

选取所有偶数:$("选择器:even")

选取所有奇数:$("选择器:odd")


jQuery 遍历方法

1.遍历祖先:1.parent() :找到父元素

2.parents(): 找到祖宗无数代

3.parentsUntil():指定查找祖宗的范围(不包含查找这个元素)

2.遍历后代:children()  :返回备选元素的所有直接子元素

children(选择器)    :可以指定选择备选元素的子元素

find():返回备选元素的后代元素,一路向下到最后一个后代


jQuery 遍历 - 同胞(siblings)

siblings()

被选元素的所有同胞元素

next()

被选元素的下一个同胞元素

nextAll()

元素的所有跟随的同胞元素

nextUntil()

介于两个给定参数之间的所有跟随的同胞元素

prev()

被选元素的上一个同胞元素

prevAll()

元素的所有前面的同胞元素

prevUntil()

介于两个给定参数之间的所有前面的同胞元素



jQuery 遍历 - 过滤

first()

被选元素的首个元素

last媒体查询

视口:可以看到内容的范围(可视的窗口)

          通过viewport指定 

widith: device-width  设备的宽度

initaial-scale  初始化的缩放比例

maximum-scale 最大的缩放比例

user-scalable  不允许用户缩放no


@media:现在web都会做多终端的页面处理

                可以通过媒体查询 设置每一端的样式  根据媒体的宽度设置不同样式


AJAX

用于无刷新  更新内容的手段    并且这种方式是异步的

                                                  现在常用于 与服务端通讯

                                                也可以用于加载本地数据或者件

线程和进程:电脑系统  就是一个runloop每一个软件就是一个进程 :        QQ:同时接收ppt

                        同时聊天

                        同时下载游戏  全是线程

                陌陌:下载视频

                            渲染视频

                            刷新视频    全是线程

                探探:

                微信:



同步:上一个任务执行完 才会执行下一个任务  同步着进行

异步:可以同时进行多个任务,异步的任务没有执行完可以进行下一个任务的    常用于1.耗时任务:加载大的音频文件

                                                        加大大量数据

                                      2.不确定执行完时间的任务:与服务器通讯

为什么要异步:1.不会堵塞下面任务的执行  js

是没有线程概念-》主线程(ui线程)  如果不使用异步就会一直等下一个任务-》渲染界面任务被延迟-》视觉效果卡死


  实现AJAX的方式:1.原生js  :XMLHttpRequest实现:1.实例化XMLHttpRequest  2.打开一个请求  3.监听请求的状态  4.发送请求


                                2.jQuery  :ajax

                                3.axios

                                4.request

客户端与服务器通讯:使用http通讯  :通讯方法  get :把要发送的数据 拼接到url中    特点:1.传输速度快  2.重要的内容不要使用get-》参数放到 url中  直接获取  3.浏览器URL的长度是有限制的  超过之后会被截取  get不可以传比较多的内容  参数暴露在URL中-》相对来说  参数是不安全的

      post:参数放到请求体中  特点:1.想对get参数相对安全  2. 可以传输任意的文件  (唯一限制 服务器硬盘大小限制)


          请求内容:请求头  请求体


到底用哪个?:搞前端  接口文档  写的用GET必须用GET

                                                        写的post就必须用post


搞服务端  需要思考  传输数据的大小

                                  是否需要暴露在URL中

决定使用哪种方法  服务端与前端 必须保持一致  不然没办法通讯


单位

px  像素单位

% 百分比

vw vh  视口的高度  均分成一百份    注意点电脑的工具栏和浏览器的工具栏都包括


em  相对于《父元素》字号的大小  父元素的字号 10px  1em=10px(父元素等于多少 em等于多少)


rem  相对于《根元素》字号的大小  html字号是18px  1rem=18px



less

浏览器只能识别  HTML  CSS  JS  文件

使用css遇到的问题:1.权重

                                  2.不能定义变量

                                  3.不能进行数值的运算

                                  4.不能使用函数

                                  5.结构不清晰


为了解决css遇到的这些问题就可以使用ess  sass这类插件  最终都要解析成css  :  1.按他的规则定义样式 2.通过js解析样式的文件  3.生成css文件-》浏览器就可以


less的功能  安装引入less:1.安装:bower:bower install less

                                                          npm:npm i bower

                                                          cdn:

                                                          直接下载js

                                            2.引入:1.less  创建less文件:需要在stylesheet后面添加less才能使用

                                                          2.js



类似DOM数的语法结构 html:1.head  2.body:1.div :1.p 2.a 3.img  2.main:div:1.p 2.a 3.img()

被选元素的最后一个元素

eq()

被选元素中带有指定索引号的元素

首个元素的索引号是 0 而不是 1

filter()

filter() 方法允许您规定一个标准。

不匹配这个标准的元素会被从集合中删除,

匹配的元素会被返回

not()

不匹配标准的所有元素Eventlistener("事件名",函数)

你可能感兴趣的:(2021-03-02)