js常见错误解析:数据类型:Undefined 声明未赋值 Null空 Boolean布尔 String字符串 Number数值 Object对象类型 Array数组
大写是类型,小写是值Null中只有一个null值
一.事件:用于html中响应函数(调用函数) onclick='函数名(传参)'
鼠标事件:onclick/ondblclick/onmouseover/onmouseout/onfocus/onblur/onselect/onchange/
onload/onunload script中调用函数 直接写函数名 eg:add()
键盘事件:
增加结点的事件:addEventListener('click',function(){},true)
stopPropagation阻断消息传播即点击div不会触发body点击事件
如果body增加事件用里true,先触发body点击再触发body点击
二.函数:定义函数function 函数名(){函数体}
参数:函数名(参数1,参数2)
返回值:
function app2(x,y)
{
var sum,x,y;
sum = x * y;
return sum;
}
result=app2(5,6);
结果result是30,return的作用是储存函数的结果为sum的值;
如果没有return,不知道结果是x?y?sum?
三.语句:if (true) {语句体;}
if (true) {语句体;} else {语句体;}
switch(未知数){case 1:执行代码块 ;break;
default:不同时执行的代码 }
for (var i = 0; i < Things.length; i++) {
Things[i]
}
继续循环continue;退出循环break 编程练习有困难第七章编程练习
四.变量:储存东西(数值,字符串,布尔值)
用var命名,可以命名多个var num1,num2;
操作符:= 赋值 ==等于 !=不等于;!非;
+字符串连接,数值想加;++自身加一;%取模/求余;
&&并且;||或者;
-= 相减后赋值a-=b即a=a-b;%= 取余后赋值a&=b即a=a%b;
五.数组:var A=Array(5)
调用:A[0]
可以用var 数组名=Array(X)进行定义;X代表数组长度即储存的数据;
数组赋值:直接赋值eg: myarray[0]=100
创建同时赋值eg: var myarray=new Array(100,66,88,99)
直接输入数组eg: var myarray=[100,66,88,99]
数组长度属性:length,调用 数组名.length,一般是索引X+1
二维数组:表示和赋值和调用方法:myarray[][]
定义方法一:var myarr=new Array();//声明一维
for(var i=0;i<2;i++){ //一维长度2
myarr[i]=new Array(); //声明二维
for(var j=0;j<3;j++){ //二维长度3
myarr[i][j]=i+j;//赋值,每个元素值为
i+j
};}
思路:声明长度声明长度赋值
定义方法二:var Myarr=[[a,b,c],[d,e,f,]]
myarr[0][1]表示b,myarr[1][2]表示f
定义方法三:var myarr=new Array()
myarr[0]=[a,b,c] 参考数组赋值部分
push()添加 shift()删除
六.对象:所有事物都是对象,每个对象都有属性和方法。
属性:对象特定性质;访问对象属性:objectName.propertyName。
offsetTop初始距离浏览器高度
方法:在对象上执行的动作。访问对象方法:objectName.methodName()。
七.节点:
获取节点:
document.querySelector('') 可获各种,只能获取第一个,不是数组
document.querySelectorAll()
document.getElementById('')获取id
document.getElementsByName('')获取name
document.getElementsByTagName('')获取标签
document.getElementsByClassName('')获取class
后两个相当于数组,调用属性和方法需要在后面加索引[],用函数覆盖所有
节点的属性:className属性,即标签的class
style属性,该属性的属性包括:color display backgroundColor
css中带-的去掉变为大写如:border-radius borderRadius
用法;id直接用 格式:Object.style.color所赋的值要加引号或num+'px'
onclick增添一个事件,赋值语法 .onmouseover=function(){displayDate()}
lenght获得name/tag的数量,[x]是第x+1个节点
nodeName名称nodeValue值nodeType类型
childNodes访问该节点下的所有子节点,数组的形式存在,parentNode父节点
firstChild第一个子节点与childNodes[0]一致,lastChild最后一个
nextSibling下一个节点previousSibling上一个节点
getAttribute('index')获取自定义属性index值
以下前面对象都是父节点
appendChild(X)对象最后一个子节点后添加一个新的子节点X
insertBefore(X,Y)注意X,Y均为节点名 X为新节点名插在Y这个节点前
removeChild(X)删除对象的节点 replaceChild(new,old)
节点的方法:getAttribute('')该方法可用于获取节点的属性,引号内写属性名
setAttribute('','')设置节点属性值,属性名 属性值
创建节点:var newnode=document.creatElement("p") //选择创建的节点
newnode.innerHTML="php" //输入内容
document.getElementById("parsentnode").appendChild(newnode)//节点创建的位置
父节点最后加入一个元素
insertBefore插到前面,insertAfter插到后面
创建节点基本语法document.createElement("")里面输入创建类型
document.createTextNode("")里面输入文本
八.类
function classname(){属性,方法,返回值}
prototype所有类都有的对象,可将方法只存储一遍
对象
Date对象
var myDate = new Date();声明调取内置对象,唯一,仅可以Date()
以下是该对象的方法,必须调取才能使用
myDate.getFullYear();//获取完整的年份(4位,1970-????) set设置
myDate.getMonth(); //获取当前月份(0-11,0代表1月) set设置
myDate.getDate(); //获取当前日(1-31) set设置
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23) set设置
myDate.getMinutes(); //获取当前分钟数(0-59) set设置
myDate.getSeconds(); //获取当前秒数(0-59) set设置
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期(年月日)
myDate.toLocaleTimeString();//获取当前时间(12小时 时分秒 自动加0)
myDate.toLocaleString( ); //获取日期与时间最牛逼
myDate.setFullYear();//括号内设置 先设置后使用
myDate.setTime(myDate.getTime()+60*1000)设置时间为一分钟后的时间
string字符串对象 赋值即声明调取内置对象了,不唯一
属性:length
方法;charAt(x)返回索引为x的字符,字符要加引号(下同)
indexOf(x,y)返回字符x第一次出现的位置,从y检索,无y从头
split(x,y)将字符x变成逗号,最多变y次,无y全变
substring(x,y)返回从索引x开始到索引y结束的字符串,无y到结尾
slice(x,y)同substring()
substr(x,y)从索引x开始提取y个字符,无y到结尾
Math对象,直接用作对象即可
ceil(x)将x向上取整;floor(x)向下取整,结果肯定比x小
round(x)四舍五入,random()随机数0-1不传参,乘10得到0-10
Math.floor(Math.random()*10)随机输出不大于10的整数
Array数组对象, 和string对象差不多,先赋值后使用
属性:length
方法:array1.concat(array2,array3)连接数组,不改变原来的数组
join(分隔符)调用该数组所用元素,无指定分隔符则用逗号,()和("")不同
reverse()颠倒数组内元素
slice(x,y)和字符串的substring(x,y)一样,只不过slice是数组
sort(方法函数)数组排序,方法函数可以直接输函数名
return a-b //升序,冒泡排序,无需理解
document对象,属性:body获取body
获取网页宽度var w=document.documentElement.scrollWidth
|| document.body.scrollWidth;
浏览器可视区域变成clientWidth 网页尺寸offsetWidth 滚筒条的高scrollTop
window对象,和Math一样直接调用方法即可
不需要写window的方法:alert()
需要写window的方法:open("网址","方式","宽 高")
计时器:setInterval(函数名,时间)函数名格式为name或"name()"时间单位为毫秒
取消计时器clearInterval(定义的对象名)对象名不需要加冒号
setTimeout(函数名,时间)时间为延迟时间,执行一次,除非自身重复自身
clearTimeout(定义对象名)
设置自身调用时如果循环函数内有var则无法停止,因为每循环一次就定义一个计时器
history对象,前面可以加window.也可以不加
属性:window.history.length浏览url的数量,url包括锚
方法:back()加载上一个url,forward()加载上一个url
go(x)表示:x为正时相当于点x次前进,为负相当于点x次后退,0即当前
location.对象,和history对象同理,作用获取当前的url
属性:href整个url host网址和端口
方法:assign() reload() replace()
navigator对象,获取浏览器信息,用法同history
属性:appName appCodeName appVersion platform
useAgent浏览器各种信息
screen对象,获取屏幕信息,用法同上
属性:width宽 height高 availWidth可用宽 availHeight可用高