js第一周

71 阅读3分钟

概述

javascript是一个运行在客户端浏览器的 解释型 弱类型 面向对像

解释型

运行前不检查,运行后碰到错误停止后续代码

js的使用

直接在html上写一个script标签,里面写js 或者在js文件中写,然后引入

三种输出方式

在控制台输出

console.log(内容)

在页面上输出

docunment.write(内容)

在弹出框输出

alter(内容)

变量

一种创建后可以反复修改和使用的数据,相当于一个代数,使用这个代数就是在使用里面的值 使用: var 变量名=值;

常量

创建后值不能被修改,只能设置一次值 使用: const 常量名=值;

算术运算符

  • ① % :两个数相除,不取商,取除不尽余下的值 一般用来判断奇偶性 获得一个数字的倒数n位
  • ② + :左右两边如果出现一个字符串则转为字符串的拼接
  • ③ -*/% :不仅可以计算数字。也可以把纯数字的字符串转化为数字,但是字符串中有非数字的字符,则转化为NaN NaN参与任何计算结果都为NaN,参与任何判断都为false

数据类型

原始值:

  • 1:number 数字 取值无数个
  • 2:string 字符串 取值无数个
  • 3:boolean 布尔 取值:true/false
  • 4:undefined 创建一个变量没有赋值 就为undefined
  • 5:null 空 释放变量节约内存空间

分支结构

判断不同情况下对应的代码执行不同内容 执行了一条就不会执行其他 if(判断条件){操作;} else if(判断条件){操作;} else if(判断条件){操作;} else{默认操作;}

  • 1:else if想写多少写多少 最后else可以不写 如果什么条件都不满足及什么都不执行
  • 2:书写顺序需要判断需求来写,不能乱写

用户输入弹出框

  • var 变量名=prompt(“提示文字”,“默认值”)
  • 默认值位置可以不写,用户输入的字符出现在那个位置

数据类型的转化

  • 1.算术运算符(隐式转化)

  • ①. + 左右任意一边碰到字符串,就不在是加法,而是左右两边内容的拼接

  • ②. ture可以转化成1

  • false可以转化成0

  • undefined可以转化成NaN

  • null可以转化成0

  • ③. -*/% 可以把纯数字字符串转化成数字,不是纯数字则转为NaN

  • 2.显性转化(强制转化)

  • ①:parseLnt(str/num)

  • 从左到右一次读取字符,提取数字直到碰到非数字就停止,只能转化为整数,如果一开始就碰到非数字,则为NaN

  • ②:parseFloat(str)

  • 同上,但可以识别一个小数点

  • ③:var str=x。toString();

  • ④:Number(x) 完全等效隐式转化 不如用 x-0,x*1,x/1,x%1

  • NaN的常用用法

  • !isNaN(内容) ture 是一个有效数字 false则为NaN,,

  • 通常用来判断内容是不是数字
    

function的基础

需要提前预定义好,可以反复使用的代码段 function 函数名(){代码;}

  • 调用:1.要么在js中直接写要执行几次 :函数名();
  •  2.绑定触发事件`<elem onclick="js代码">内容</elem>`
    

带参数的函数

function 函数名(形参){函数体}

  • 使用:实参:
  •   函数名(实参) 实参是具体的值,需要使用的时候再调用
    
  • 实参和形参是一一对应的,可以有多个,中间用逗号隔开

程序的流程控制语句

  • 顺序执行:默认从上到下执行
  • 分支结构:通过条件的判断 选择代码执行
  • 循环结构:通过条件的判断,选择要不要重复执行代码

比较运算符

,<,>=,<=,==,!= 结果一定是一个布尔值

逻辑运算符

&&:并 ||: 或 !:颠倒布尔值

循环结构

循环三要素

  • 循环条件:开=开始到结束 循环的次数
  • 循环体:做的操作时什么
  • 循环变量:记录当前的时在哪一次,不断变化,往往都朝着不满足条件进行

while循环

var 循环变量名=几 while(循环条件){ 循环体; 循环变量的变化;}

  • 如果满足条件就做循环体操作,直到循环条件不满足,就会退出循环
  • 宏观上循环一瞬间就结束了,但微观上来说是一次一次执行的

for循环

for(var 循环变量名=几;循环条件;变量的变化){ 循环体;}

死循环

for循环和while循环都可以 while(ture){循环体} for(;;){循环体}

  • 退出死循环:break(只能在循环中使用,多半是搭配死循环使用)

数组的基础

  • 是一个可以保存多个数据的集合
  • 都是线性排列,除了第一个元素,每个元素都有一个唯一的前驱元素,除了最后一个元素,每个元素都有一个唯一的后继元素
  • 每个元素独有一个自己的位置,成为下标,下标从0开始,到最大长度-1

创造数组

  • 1.var arr=[数据1,数据2,]
  • 2.var arr=new Array(数据1.数据2,,,)
  • 获取数组中的数据:数组名[下标];
  • 添加、替换:数组名[下标];
  • 数组的三大不限制 1.不限制元素个数 2.不限制元素类型 3.不限制下标越界 1.如果下标越界,获取元素会返回一个undefined 2.如果下标越界,添加元素会得到一个稀疏数组
  • 4.数组中的唯一属性:长度:数组名.length;获取当前数组的长度:最大下标+1
  • 5.三个固定套路
    ①获取倒数第n个元素 :arr[arr.length-n] ②始终向末尾添加元素:arr[arr.length]=新值 ③缩容 删除倒数n个元素:arr。length-=n

遍历数组

for(var i=0;i<数组名.length;i++){}

查找元素

  • 通过id查找: var elem=document.getElementById("id值")
  • 通过标签名: var elems=document.getElementsByTagName("标签名") 找到的是一个集合
  • 通过class查找: var elems=document.getElementsByClassName("class名") 找到的是一个集合
  • 通过关系查找 必须先找到一个元素才能调用关系 1.父元素:elem.parentNode 2.子元素:elem.children 集合 3.第一个儿子:elem.firstElementChild 4.最后一个儿子:elem.lastElementChild 5.前一个兄弟:elem.previousElementSibling 6.后一个兄弟:elem.nextElementSibling

操作元素

  • 前提是找到元素,dom集合不能直接操作,要遍历
  • 获取内容:elem.inner.HTML,设置内容:elem.inner.HTML="新内容",获取文本内容:elem.inner.Text,设置文本内容:elem.inner.Text="新内容",获取input内容:input.value,设置input内容:input.value="新值"
  • 获取属性值:elem.getAttribute("属性名");设置属性值:elem.setAttribute("属性名","属性值");
  • 简化版获取属性值:elem.属性名;设置属性值:elem.属性名="新属性值";简化版写class必须写classNa,并且不能操作自定义属性
  • 获取样式:elem.style.css属性名;设置样式:elem.style.css属性名="css属性值";css样式中有-的地方要去掉-,改为小驼峰命名法

绑定事件

  • elem.on事件名=function(){}
  • this关键字,是一个指针,用在事件内;如果单个元素绑定事件:this->这个元素;如果多个元素绑定事件:this->当前触发事件的元素

- 计算字符串

去掉字符串的"" :eval(str)