js笔记

118 阅读2分钟

输出方式:

0.控制台输出:console.log(想要输出的内容); 1.在页面输出:document.write();//绑定事件函数里面写了document.write()会把页面上原来的HTML全部替换 2.在警告台输出:alert()//会卡住整个页面;

变量和常量:

变量:var 变量名=值; 常量:const 变量名=值;

算术运算符

      • / % %取余,俗称模; 1.判断某个数字的奇偶性:num%2==0偶数,num%2==1奇数; 2.取一个数字的想要的后n位1234%10==4;

元数类型

原始类型:5个,Number、String、Boolean、Undefind、Null; 引用类型:11个, Array、Function

数据转换

隐式转换

0.算数运算法具有隐式转换: 默认转为数字在运行 true->1 false->0 undefined->NaN null->0 特殊:a. +运算遇上了字符串,则变为拼接 b. -*%/:字符串也能转为数字,纯数字才行,包含了非数字字符,则为NaN "1000"->1000 "100b0"->NaN NaN:不是一个数字,但是确实是一个数字类型 缺点: 1.参与运算结果都为NaN 2.参与任何比较运算结果都为NaN-无法用普通运算判断x是不是NaN 解决:!isNaN(x)

强制转换(显示转换)

0.转字符串:xx.toString();//页面上一切的数据都是字符串,所以此方法几乎很少使用 //undefined和null不能使用,因为他们不能使用操作

1.转数字: parseInt/Float(str)//从左往右依次读取每个字符,碰到非数字字符就停止,Int不认识小数点,Float认识第一个小数点 Number(x);完全等效于隐式转换,不会手动使用。

Function函数

Function:需要提前创建好,以后可以反复使用的代码段 作用: 1.不希望打开页面就执行 2.希望可以反复执行 3.独立的功能体

方法: 1.创建函数 Function 函数名(形参,....){ 函数体 }

2.调用函数 函数名(实参,...);

如果函数体是固定的,则不用参数 如果函数体需要根据实参的不同,进行略微不同的操作,则需要带参数的函数

分支结构

比较运算符:> < >= <= == != 逻辑运算符: &&:全部满足,才满足;一个不满足,就不满足; ||:全部不满足,才不满足,一个满足就满足 !:颠倒布尔值 以上所有运算符结果都是布尔值

分支语法: if(){} if(){}else{} if(){}else if(){}else{}

循环

循环:反复执行相同或相似的代码 var变量=几 while(条件){ 操作; 变量变化

} for(var 变量=几;条件;变量变化){ 操作 }

死循环: while(true){} for(;;){}

退出循环:break;

数组

数组:一个内存空间可以存放多个数据 1.创建 var arr=[]; var arr=new Array(); 2.访问:arr[i]; 下标越界:undefined 3.添加: arr[i]=新值; 下标越界,稀疏数组,下标不连续,遍历的时候会用很多undefined 4.arr.length:获取数组的长度 三个固定套路: 末尾添加:arr[arr.length]=新值; 获取末尾第N个元素:arr[arr.length-n]; 缩容:arr.length-=n; 遍历数组: for(var i=0;i<i.length;i++){ arr[i];当前元素}

DOM

DOM:Document Object Model 文档对象模型,专门用于操作文档(HTML) DOM树:DOM将HTML看做是一颗倒挂的树状结构,树根:docomen对象,不需要创建,DOM将每一个 【元素】、文本、属性、注释,都看为是一个DOM节点、元素、对象 树根的作用:找到任何元素,找到元素后就可以操作

查找元素:

1.通过HTML特性:
  id:单个元素 没有找到返回null
  标签/class名:var elems=document/parent.getElementsByTagName;
  特殊:a.DOM集合-不允许直接操作,要么加下标拿到某一个,要么遍历拿到所有
        b.parent:是你之前找到的父元素
        c.没找到:[]
        

2.通过关系:至少要找到一个人,才能使用关系网 父元素:elem.parentNode; 子元素:elem.children; 合集 第一个儿子:elem.firstElementChild; 最后一个儿子:elem.lastElenentChild; 前一个兄弟:elem.previousElementSibling; 后一个兄弟:elem.nextElementSibling;

操作元素

1.内容:innerHTML(能识别标签)/innerText(纯文本)/value(专门为input准备) 获取:elem.innerHTML 设置:elem.innerHTML="新内容"

2.属性: 获取属性:elem.get.getAttribute("属性名")简化版elem.属性名 设置属性:elem.setAttribute("属性名","属性值") -> elem.属性名="属性值" 简化版有缺陷: 1、class写为className 2、自定义属性不能操作到

3、样式:内联样式 获取:elem.style.css属性名 设置:elem.style.css属性名="css属性值";

 特殊:1、css属性名有横线去掉横线变成小驼峰命名法
	 2、只能访问内联

绑定事件

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

关键字:this 单个绑定事件this指:绑定事件的这个元素; 多个元素绑定事件this指触发事件的元素;