初学JavaScript第一周

102 阅读6分钟

JavaScript简称JS,是运行在javascript解释器或者特定引擎中的解释型弱类型面向对象脚本语言。它的代码可用任何文本编辑器编写,不需要进行规定,变量的数据类型是由值来决定的,主要用于客户端的数据计算、表单的数据验证、提供事件、网页中css做不了的特效、与服务器端进行交互。 JavaScript的代码一般通过两种方法写入:1、直接在HTML上通过写入;2、创建JS文件,在js文件中书写js代码,最后在HTML页面中引入JS文件。JS中如果只出现逻辑错误时,不会出现报错,后续代码也不会执行,一般通过调试语句来找到错误的地方,最常用的一种方式是在控制台输出日志:console.log()也称为打桩输出,还有两种方法是在页面上输出:document.write()和弹出框显示:alert()。 在JS中通常会把经常使用的数据保存在一个变量中,并且取一个变量名,使用变量名就相当于在使用那个变量的值。语法为:var 变量名=值;JS中把一旦初始化后,值不能被更改的称为常量,语法为:const 常量名=值;在变量中,如果只声明了但是没有赋值,默认值为undefined,变量名也应该见名知意,不能以数字开头,当想要创建多个变量时,var可以省略掉,每个值用逗号隔开,最后以分号结尾。 JS中的算术运算符为“+、-、*、/、%”,取余(%),也叫模,通常用于判断奇偶数,获取某个数字的最后n位或者控制一个运算的结果永远不超过某个数。算术运算中存在隐式转换,默认运算符左右两边都会变为一个数字再运算,其中也有几个特殊的地方:在“+”运算中,如果碰到了一个字符串,那么左右会转为字符串再拼接起来。“- * / %”就算是遇到了字符串可转为数字,但是需要时纯数字,只要包含了非数字字符,结果则为NAN。还有几个特殊的转为数字ture->1、false->0、undefined->NAN、null->0。NAN是数字类型,参与任何算术运算结果为NAN,参与任何比较运算结果为false。除了隐式转换还有强制转换,转为字符串为:var str=x.to string();其中x不能为undefined和null,通常页面上的所有数据都默认为字符串。转为数字有三种方式:一、从左往右依次读取每个字符,进行转换,碰到非数字就停止,且不认识小数点,语法为:var num=ParseInt(str/num);二、可以识别小数点的,语法为:var num=ParsFloat(str);三、任何都可以转为数字,语法:Number(x);这个办法通常不使用。 JS中比较运算符为:<,>,>=,<=,==,!=,一般用于判断或者条件中出现,结果为布尔值。 逻辑运算符为:&&(与.并且) ||(或) !(非),&&只有条件全部满足才为true,只要有一个条件不满足九尾false,||只要条件全部满足,才为false,只要满足一个就为true,!为颠倒布尔值。 JS中的函数也称为方法,是需要提前创建好后,反复使用的代码段。一般用于打开页面不希望立马执行、希用户或者程序员触发,或者希望能反复执行的地方。他本身就为一段独立的功能体。函数的使用首先需要创建一个函数,语法:function(){},并调用函数,调用函数的方法有两个,第一种方法是直接写在JS代码中,写几次就调用几次,语法 函数名(),第二种方法为绑定在页面元素上,让用户来触发。。函数又有带参数的函数,创建带参数的函数语法:function 函数名(形参...){函数体;} 形参为变量名,不需要var,并没有保存真正的值,调用函数语法:函数名(实参...),带参数的函数,在调用时,传入的实参的顺序和个数都需要对应上,可以实现两数相加,比如:function add(a,b){consoloe.log(a+b);} add(1,2);add(2,3);函数体固定不变时,不需要使用带参数的函数,如果函数体希望根据传入实参的不同,则需要使用带参数的函数。 函数中的结构分为顺序结构、分支/选择结构、循环结构。顺序结构为默认结构,代码从上到下依次执行,分支结构为根据条件选择一部分代码去执行,循环结构为根据条件判断是否需要再一次重复的执行某一些代码。 分支结构:一、一个条件一件事,不满足就不执行:if(条件){操作} 二、一个条件两件事,满足就做第一件,不满足就做第二件:if(条件){操作}else{默认操作} 三、多个条件多个事,满足谁就做谁: if(条件1){操作1} else if(条件2){操作2} else{默认操作} 循环结构是反复执行相同或者相似的操作,三要素:1.循环条件:开始.结束 2.循环体:循环的操作3.循环变量。 一、while循环:先判断循环条件,如果条件为真,则执行一次循环体,直到条件为假,循环结束。 语法:var 循环变量=x; while(循环条件){循环体;循环变量变化一下} 死循环:不会结束的循环,死循环一般搭配break进行退出 语法:while(true){循环体}; 循环退出语句:break; 二、for循环:for循环比while循环简洁,循环变量可有多个变量,比较常用 语法:for(var循环变量;循环条件;变量的变化){循环体}; 死循环:for( ; ;){循环体} JavaScript中数组是多个数据或者元素组成的一个集合,并保存在一个变量中,数组中都元素按照线性顺序排列,都有一个唯一下标,下标从0开始,到最大长度-1。 创建数组有两个方式:1.直接量方式 var arr=[数据,数据...] 2.构造函数方式 var arr=new Array(数据,数据...) 访问数组中获取数据 数组名[下标];添加数据 数组名[下标]=新数据 ,但是下标处有元素,会被替换,下标越界会成为稀疏数组,中间会出现undefined且下标不再连续 下标容易数错,有一个特定属性 数组名.length 向末尾添加元素为 arr[arr.length]=新值 获取倒数第n个元素 arr[arr.length-n] 删除末尾的n个元素 arr.length-=n 遍历数组是讲数组中的每一个元素取出来执行相同或相似的操作 语法:for(var i=0;i<arr.length;i++){arr[i];} arr[i]为当前获取到的元素。 JavaScript的核心语法为EcmAscript-Es3/5/6,Document Object Model简称DOM,为文档对象模型用于操作网页文档,Browser object Model简称BOM,为浏览器对象模型。查找元素的方法有两种,通过HTML去查找和节点之间的关系查找。HTML查找又分为id、标签名、class名查找 id查找:var elem=document.getElementById("id值") 找到的为单个元素,DOM节点可直接操作,页面如果有多个重复的id,只会返回第一个,一般不使用 标签名查找:var elems=document/已经找到的父元素.getElementsByTagName("标签名") 返回的是一个集合,不能直接用来操作,要么用遍历数组拿到全部或者下标拿到某一个 class查找:var elems=document/已经找到的父元素.getElementsByClassName("标签名") 节点之间的关系查找:父:elem.parentNode;->返回单个元素 子:elem.children;->返回集合 第一个儿子:elem.firstElementChild;->返回单个元素 最后一个儿子:elem.lastElementChild;->返回单个元素 前一个兄弟:elem.previousElementSibling;->返回单个元素 后一个兄弟:elem.nextElementSibling;->返回单个元素 操作元素分为内容、属性、样式 一、内容 (1)innerHTML属性:可识别标签 1.获取 elem.innerHTML 2.设置 elem.innerHTML="新内容" (2)innerText属性:不能识别标签 1.获取 elem.innerText 2.设置 elem.innerText="新内容" (3)value属性:为input操作内容 1.获取 input.value 2.设置 input Value="新内容" 二、属性 1.获取 elem.getAttribute("属性名");2.设置 elem.setAttribute("属性名","属性值"); 简写方式:1、获取:elem.属性名; 2、设置:elem.属性名="属性值"; 简写方式不能操作自定义属性,class要写为className 三、样式 语法:1.获取 elem.style.css属性名; 2.设置 elem.style.css属性名="css属性名"; css属性名有横线的要换为小驼峰命名法 元素绑定事件中,绑定单个元素为 elem.onclick=function(){操作;this}this. 单个元素绑定事件,elem绑定事件的这个元素 绑定多个元素for(var i=0;i<elems.length;i++){elems[i].onclick=function(){操作;this}} this多个元素绑定事件,当前触发事件的元素