Monday
1、
了解JavaScript相关知识:由ECMAScript(ES),DOM , BOM三部分组成
ES:JavaScript核心语法
DOM:文档对象类型
BOM:浏览对象类型
2、
了解js中常见的五种数据类型
1.数字类型 Number (数字)
2.字符串类型 String ("")
3.布尔型 Boolean (true或false)
4.Null 空 (null)
5.undefined 未定义 (undefined)
3、
定义变量和常量:
变量 var 变量名= 变量;
常量 const 常量名 = 常量;
*变量可以随意变化 常量一旦定义就不可更改
*变量名不能随意定义:1.不能使用关键字
2.尽量见名知意
3.使用拼音会不够装杯
4、
JavaScript三中输出方式:
console.log(); 在控制台输出(一般常用)
alert(); 在页面弹出提示框 但会卡住页面内容,所以一般不用
document.write();在页面出现 会占据页面内容,一般也不常用
感受: 初来乍到,感觉良好
Tuesday
算术运算符:+ - * / % :
%:取余 m%2 == 0 偶数
m%2 == 1 奇数
m%n —> 结果不会小于n
1、算术运算符中的隐式转换
在运算过程中,一般会将两边都默认转换为Number类型在进行转换
*在加法运算中,如果出现字符串类型,则会默认将两边都转换为字符串类型,再进行拼接操作
例如:consol.log("12"+2); 控制台会出现122而不是14;
*在除加法以外的算术运算中字符串也会转换为Number类型再进行计算,但如果字符串中包含非数字字符,则结果为NaN
例如:console.log("abc"*1); 控制台会出现NaN
2.NaN:全称为not a number
1、NaN确实是一个Number类型,但不是一个正常的数字
2、NaN不能和任何数据相等 甚至不能等于自己,所以在运算中没用任何作用
3.正常的判断方法都无法判断是否为NaN 解决办法:isNaN(); 判断是否为NaN
!isNaN(); 判断是否为有效数字
3、用户输入框:prompt()
4、查看数据类型:typeof()
5、数据类型转换:
转换为Number类型:
parseInt(); 转换为一个整数
parsefloat(); 和parseInt几乎一样 但是可以识别第一个小数点 和parse一样最大的作用就是去掉单位
Number: 可以将所有数据转换为Number类型 但作用不大,相当于隐式转换,还不如*1,-0,/1
转换为字符串类型:
.toString(); 没有太大的意义 因为页面上所有的内容都属于字符串类型 无需转换
6、函数基础
创建函数function 函数名(形参) {
函数体
}
调用函数 函数名(实参)
*形参相当于变量名 实参也就是实际参数
*函数一般用于不想一打开页面就开始触发事件的情况
*并且它可以多次触发,最好可以绑定一个按钮然后等待用户触发:<elem onclick="函数名"></elem>
*形参和实参可以不添加 一般使用在固定不变化的操作上面
*如果需要根据不同的实参来实现不同的操作,则需要为函数添加形参和实参
7、分支结构
语法:if(判断条件){
若符合判断条件则执行这里面想进行的操作
}else//意为否则 {
若不符合判断条件则执行这里面想进行的操作
}
*最后一个else可以省略但最好不要省略,如果前面的条件都不满足,所有的分支都白写
*分支是从上往下进行的,且只会执行一条,所以上面的判断条件最好不要包含下面的判断条件,不然下面的分支也白写
8、比较运算符
m>=n m大于等于n
m<=n m小于等于n
m>n m大于n
m<n m小于n
m==n m等于n
m!=n m不等于n
m===n m的值和类型都和n相等
9、逻辑运算符
|| 或者 只要满足一个就为true
&& 与 并且 只有全部满足才为true 否则为false
! 颠倒布尔值 !true == flase; !false == true;
第二天还未意识到事情的严重性(即将自闭)
Wednesday
一、while循环
1、语法: var 循环变量 = n;
while(循环条件) {循环体;循环变量变化}
*先判断循环变量是否符合循环条件 符合则进行循环
*循环变量一直变化到不符合循环条件就会停止循环
*循环变量的变化可以不写,但会变成死循环
2、死循环
语法:while(true){循环体}
*死循环会一直进行,内存也会不断增加到浏览器崩溃
*一般需要搭配break来结束循环
3、循环退出语句:break;
二、for循环
1、语法: for(var 循环变量=n;循环条件;循环变量变化){循环体};
*while拥有的特点for也拥有,for的使用更加简洁,所以一般都使用for循环
*循环变量可以设置多个
*死循环写法:for$(;;){}
循环总结:1、while循环一般不使用,只有在不确定循环次数时可以使用
2、for循环作为日常使用,因为大部分情况都可以确定循环次数
三、数组
I、数组的定义:多个元素或数据组成一个集合,将他保存在一个变量之中
数组的每一个元素都有一个唯一的编号,称为:下标
下标从0开始,一直到元素数量-1
举例:[a,b,c,d] a的下标为0,d的下标为4-1=3
Ⅱ、数组的创建:
直接量方式:var arr = [];//空数组
var arr = [数据,数据];
构建函数方式:var arr = new Array();//空数组
var arr = new Array(数据,数据);
*两种方式作用相同 且直接量方式更加简单,所以按照摸鱼定理来讲一般使用直接量方式
Ⅲ、数组的访问:
获取数据:arr[下标];
*下标越界:下标不存在,在引用了不存在的下标就会造成下标越界
*如果获取数据时下标越界,则会出现undefined
添加数据:arr[下标]=新数据;
*如果下标处已有数据,则会替换掉原有数据
*如果出现下标越界,会使数组变成一个稀疏的数组,空缺的中间会被undefined顶替,且下标也不在连续
Ⅳ、数组对象的唯一属性:
arr.length//下标的最大值+1,也就是数组的长度
应用arr.length的三个固定套路:arr[arr.length]=新数据;//在最后添加一个新元素
arr[arr.length-n]; //获取倒数第n个元素
arr.length-=n; //减去最后n个元素
V、遍历数组:将数组中每一个元素都提取出来
公式:for(var i=0;i<length;i++){
arr[i];
}
*一般用于对每个元素都执行相同或相似的操作
Ⅵ、数组三大特点
1.不限制元素长度
2.不限制元素类型
3.不限制下标越界,但最好不要越界
第三天、逐渐难搞,自闭开始,一学就会,动手就废
Thursday
1、通过HTML属性查找DOM元素
通过id: var elem=document.getElementById("id名");
*返回的是单个DOM元素,可以进行直接操作
*如果id有多个,则只会找到第一个,如果未找到则返回null
通过类名: var elems=document/parent.getElementsByClassName("类名");
通过标签: var elems=document/parent.getElementsByTagName("标签名");
*返回的是一个DOM集合,不能直接用来操作,需要添加下标或遍历得到所有元素才能操作
*如果未找到则返回一个空集合
*可以使用parent来代替document,前提是parent是一个已被找到的父元素
2、通过元素之间的关系来查找DOM元素
*首先需要找到一个元素xx
*除子元素为集合以外,其他都为单个元素
1、父元素:xx.parentNode
2、子元素:xx.children
3、第一个儿子:xx.firstElementChild
4、最后一个儿子:xx.lastElementChild
5、前一个兄弟:xx.previousElementSibling
6、后一个兄弟:xx.nextElementSibling
3、操作DOM元素 例:<标签名 属性名="属性值" style="样式">内容</标签名>
内容:innerHTML(双标签:识别标签)/innerText(双标签:纯文本)/value(input)
获取:标签名.内容属性;
修改:标签名.内容属性="新内容"
属性:
获取:标签名.属性名
修改:标签名.属性名="新属性值"
样式:
获取:标签名.style.css属性名
修改:标签名.style.css属性名="新css属性值"
*只能获取内联样式
*css属性名改为驼峰式命名 例:background-color -> backgroundColor
4、元素绑定:
单个DOM元素:xx.onclick=function(){
this//当前元素
}
DOM元素集合:for(var i=0;i<elems.length;i++){
elems[i].onclick=function(){
this//当前元素
}
}
第四天,已自闭,开始抓狂,文科生的悲哀(::>_<::)