JS学习的第一周

134 阅读6分钟

二阶段第一周(3.28-4.2)

第一天

变量:var 取的名字='值'

常量:const 取的名字='值

常量一旦初始化后,不允许修改

算数运算符:+-*/% 算数运算符里面包含隐式转换:

默认运算符左右两边都会悄悄转换为一个数字 有字符串也可以转为数字,但是必须是纯数字组成的字符串才可以,只有包含一个非数字字符,结果则为NaN

NaN不是一个数字,但是一个数字类型,一个垃圾,任何的运算都为NaN

+比较特殊:只要碰上一个字符串,则都会变为字符串,+运算也不再是+运算,变成了拼接操作

js中的基本类型:5个:

1:String-字符串,有无数个,必须写'' ""来包含它

2:Number-数字,有无数个,直接写

3:Boolean-布尔,取值有两个 true/false 用于判断

4:Undefined-取值只有Undefined,没有用 垃圾

5:Null-空,取值只有null,作用是释放空间。

第二天

强制转换

1:转字符串:语法 var str=x.toString 不重要,页面中所有获取的数据都为字符串

2:转数字

1: var num=parselent(str/num); 是取的是整数

console.log(parseInt(35.5));//35

2:var num=parseflost;可以取到是第一个小点后面的数字

console.log(parseFloat("15.5px"));//15.5

3:Number(x);//x是万能的,任何人都可以转为数字

但是跟隐式转换差不多。不如*1 /1 -0,

基本的函数

1 什么是函数:也称之为方法,需要【预定义】后,可以【反复使用】的【代码段】

2 创建函数并且调用函数

创建:function 函数名(){
诺干的代码段
}
创建完成后不会马上执行,需要进行调用

3 带参数的函数

1 创建带参数的函数

形参:就是一个变量名

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

2 调用带参数的函数

实参:实际参数,这个变量名所保存的值 函数名(实参.....)

总结:

1 如果你的函数体是固定不变的,则不需要使用带参数的函数

2 如果你的函数体希望根据传入的实参的不同,做的事儿也略微不同,则需要带有参数

分支结构

1 代码中流程控制语句:

1.顺序结构:

默认结构,代码从上到下,一步一步执行的

2.分支结构

根据条件,选择一部分的代码去执行

3.循环结构

根据条件,判断你是否需要再一次重复执行某一些代码

2 比较运算符:< > = <= >= == !=

作用:比较判断的条件

结果会是一个布尔值。true/false

3 if结构:

一个条件一件事,满足就做,不满就就不做

if(条件){
操作
}

一个条件两件事,满足就做第一件事,不满足就做第二件事

if(条件){
操作
}else{
默认操作
}

3、多个条件多件事,满足谁就做谁

if(条件1){
操作1;
}else if(条件2){
操作2;
}else{
默认操作
}

逻辑运算符:&&(并且)||(或) !(非)

&&全部满足条件才会做, ||满足其中一个条件就会做 !颠倒布尔值 !true--false !!true -> true

第三天

循环结构

循环定义:反复执行【相同或者相似】的操作,一瞬间完成多次

循环三要素:

  1. 循环条件:开始,结束,重复的次数

  2. 循环体:循环操作,干什么事

  3. 循环变量:创建,然后(自增或者自减),向着不满足条件在变化

while循环

var 循环变量=几;

while(循环条件){ 循环体; 循环体变化}

死循环:停不下来的循环。

需要一个控制语句:break(退出循环)

for循环 和while能做的事是一样的,只不过语法比while更简单 语法:

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

数组

创建数组的两种方式

1 直接方法 var arr=【】空数组

2 构造函数方式 var arr=new Array()空数组

两种方式没有区别,建议用第一种

获取数组中的元素: 数组名【下标】

修改添加数组中的元素: 数组名【下标】=新元素

特殊: 1、下标处如果没有人,则为添加

2、下标处如果有人,则为修改

3、如果下标越界 - 会导致我们的数组变为一个稀疏数组,不是好东西

数组三大不限制:

1:不限制长度 2: 不限制类型 3:不限制下标越界

数组唯一的属性:length长度

语法:数组名.length

数组的三个固定套路: 1、希望向末尾添加元素:arr[arr.length]=新元素

2、获取倒数第n个元素:arr[arr.length-n]

3、缩容:删除数组的倒数n个:arr.length-=n;

遍历数组:把数组中的每一个元素取出来执行 相同 或 相似的操作 公式:

for(var i=0;i<数组名.length;i++){
数组名[i];//当前次元素
}

第四天

DOM树:

树根:是一个document对象,document对象是不需要程序员来创建的,由浏览器的js解释器负责创建

查找元素

通过html的特点来查找元素

1:通过ID找到元素:var elem=document.getElementById("id值");

2:标签名查找:var elems=document/已经找到的某个父元素.getElementsByTagName("标签名");

3.class名查找:var elems=document/已经找到的某个父元素.getElementsByClassName("class名");

通过节点之间的关系来查找元素:前提:必须找到一个人才能使用

父元素:XX.parentNode;为单个元素

子元素:XX.children,是一个集合

第一个儿子:xx.firstElementChild;为单个元素

最后一个儿子:xx.lastElementChild;为单个元素

前一个兄弟:xx.previousElementSibling;为单个元素

后一个兄弟:xx.nextElementSibling;为单个元素

单个元素可以直接操作,集合不行

操作元素:<标签 属性名="属性值" style="样式">内容</标签>

内容

1:innerHTML:获取某个元素的内容部分(可以识别标签)

获取:elem.innerHTML;多半用于判断

设置:elem.innerHTML='新内容';修改内容

2: innerText:获取 或 设置某个元素的文本部分 - 不能识别标签的

获取:elem.innerText; - 多半用于判断操作

设置:elem.innerText="新文本"; - 修改内容

3:value属性:专门为单标签(input)操作内容准备的

获取:input.value; - 多半用于判断操作

设置:input.value="新内容"; - 修改内容

属性:什么是属性:HTML属性

1、获取属性值:elem.getAttribute("属性名"); - 多半用于判断操作

2、设置属性值:elem.setAttribute("属性名","属性值"); - 修改

简化:

1、获取:elem.属性名; - 多半用于判断操作 2、设置:elem.属性名="属性值" - 修改

缺陷:

1、不能操作自定义属性,只能操作标准属性

2、class在ES6升级的时候成为了一个关键字,所以不可以在用class,换为了className

样式

css定义的方式:3种

1、内联样式 现在就使用这种样式

2、内部样式表

3、外部样式表 - 最适合写样式的时候使用此方法

语法: 获取:elem.style.css属性名 - 多半用于判断操作

设置:elem.style.css属性名="css属性值"; - 修改

注意:css属性名,要把有横线的地方,换成小驼峰命名法

元素绑定事件

单个元素:elem.onclick=function(){
//操作
  }
多个元素:
for(var i=0;i<elems.length;i++){
elems[i].onclick=function(){
//操作
 }
}

第五天

1、this的指向:

单个元素绑定事件:this->单个元素

多个元素绑定事件:this->当前触发的事件

2、取消字符样式的方法:eval(str);//脱掉字符串的外套并且执行里面的操作