前端成长史-----第一周总结

152 阅读5分钟

前面学习了html和css,总的来说难度一般,但这周开始学习js,难度系数翻倍了,刚开始听的懵懵懂懂,也许是因为要过春节了没怎么听进去,思路也理不清,所以我春节都没再打开过电脑好好的玩到了初三,但心里觉得再不学习就没时间了。从初四开始恶补,十来天没学习忘的都差不多了,今天再看讲课视频的时候思路感觉好清晰,看老师写一遍,再自己跟着老师写一遍,最后再自己写一遍,思路明确,感觉没年前那么吃力了,这或许就是张无忌练的乾坤大挪移吧,需要忘记所有,才能突破自己。

js的基础

1. 概念

js是运行在JavaScript解释器或者特定引擎中的解释型、弱类型面向对象的脚本语言。

2. 调试语句

在控制台输出 console.log()

在页面上输出 document.write()

弹出框显示 alert()

3.变量

语法:var 变量名=值

4.常量

语法:const 常量名=值

注意事项:

常量名一旦初始化就不允许被修改

5.算术运算符

加、减、乘、除:+、——、*、/

以上四种算术符号和正常的加减乘除运算一样

取余,俗称模%

可以用于判断奇偶性

6.隐式转换

常理来说只有数字才能参与算术运算,但其实字符串也可以,默认运算符左右两边都会悄悄的变成一个数字再运算

特殊点:

a.+运算:只要碰上一个字符串,左右两边都会变成字符串,+运算就会变成拼接字符

b.加减乘除运算,有字符串也可以转成数字,但必须是纯数字的字符串,只要包含了非数字字符,结果就会为NaN

7.js的基本数据类型

a.string---字符串,取值有无限个,双引号或单引号里面的一定是字符串

b.Number---数字,取值有无限个

c.Boolean--布尔,取值只有两个,true或者flase,多半用于判断比较

d.Undefined,取值只有一个 ,没有任何作用

e.Null,取值只有一个,可以释放变量节约内存空间

8.分支结构

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

if(条件){操作}

b.一个条件两件事,谁满足就谁做

if(条件){操作}

else{操作}

c.多个条件多件事,满足谁就做谁,都不满足则执行else的操作

if(条件){操作}

else if(条件){操作}

else if(条件){操作}

else{操作}

9.函数

创建函数:function 函数名(){ 代码段 }

调用:

a.直接在js里面写函数名(),程序员写几次就会执行几次

b.绑定在页面元素上,让用户输入触发,用户触发一次就会执行一次

<button onclick="函数名();"></button>

带有参数的函数: function 函数名(形参){函数体}

形参:就是一个变量名,只不过这里不需要var,并没有保存真正的值,形参可以有多个,用逗号隔开

调用带参数的函数:

a.函数名 (实参){}

一个函数可以执行相似的操作

例:实现两数相加

function add(a,b){conlose.log(a+b)}

add(1,2) 输出结果为3

add(5,6)输出结果为11

总结:

a.如果函数体事固定不变的,则不需要使用带参数的函数

b.如果函数体希望根据传入的实参不同,做的事也略微不同,则需要使用带参数的函数

10.循环

a.while循环

语法: var 循环变量=几;

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

b.for循环

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

总结:while循环一般用于循环次数不明确的情况下,for循环一般用于已经明确循环次数的情况

11.数组

概念:一个变量可以保存多个数据

下标:数组中的每个元素都有一个唯一的位置序号,用来表示数组中的内一个元素,从0开始到最大长度-1结束

创建:

a.直接量方式

var arr[元素、元素、元素。。。。]

b.构造函数方式

var arr=new Array(元素、元素、元素、元素);

访问数组中的元素:数组名[下标]

添加/修改数组中的元素:数组名[下标]=新元素

数组中唯一的一个属性:length

三个固定方式:

1.向数组末尾条例加元素:

arr[arr.length]=新值

2.获取倒数第n个元素

arrp[arr,length-1]

3.删除数组中的倒数n个:

arr.length-=n或arr.length=arr.length-n

遍历数组

for(var i=0;i<arr.length;i++){ arr[i] }

12.元素查找

A.通过HTML的特点去查找元素:

a.id查找

var elem=document.getElementById('id名')

b.标签名查找:

var elems=document.getElementsByTagName('标签名')

c.class查找:

var elems=document.getElementByClassName('class名')

B.节点之间的关系进行查找:

父:elem.parentNode //单个元素

子:elems.children //单个元素

第一个儿子:elem.firstElementChild

最后一个儿子:elem.lastElementChild

前一个兄弟:elem.previousElementSibling

后一个兄弟:elem.nextElementSibling

13.操作元素

<标签名 属性名="属性值" style="样式">内容</标签名>

1.内容

a.innerHTML属性:

获取:elem.innerHTML

设置:elem.innerHTML="新内容"

b.innerText属性:

获取:elem.innerText

设置:elem.innerText="新内容"

c.value属性:

获取:input.value

设置:input.value="新内容"

2.属性

方式一:

获取:elem.getAttribute("属性名")

设置:elem.setAttribute("属性名","属性值")

此方式可以识别自定义属性

方式二:

获取:elem.属性名

设置: elem.属性名="属性值"

3.样式

获取:elem.style.css属性名;

设置: elem.style.css属性名="css属性值"

4.元素绑定事件

单个元素:elem.onclick=function(){操作}

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

总结:一切的获取都是为了判断,一切的设置都是为了修改,千万不要对一个集合做操作,要么遍历拿全部要么下标拿一个