一. JavaScript组成
ECMAScript 核心
DOM 文档对象模型
BOM 浏览器对象模型
二. 数据类型
ECMAScript中有5种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number、和String。还有一种复杂的数据类型Object。
1.typeof操作符
返回的字符串:
“undefined” //如果这个值未定义
“boolean” //如果这个值是布尔值;布尔值:true,false
“string” //如果这个值是字符串;
“number” //如果这个值是数值;
“object” //如果这个值是对象或null;
“function” //如果这个值是函数;
2.Undefined类型
Undefined类型只有一个值,即特殊的undefined。在使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
3.Null类型
Null类型是第二个只有一个值的数据类型,这个特殊的值是null。从逻辑角度上来看,null值表示一个空对象指针,而这也正是使用typeof操作符检测null值会返回”object”的原因。
4.Boolean类型
Boolean类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true值不一定等于1,false值也不一定等于0。
5.Number类型
1).最基本的数字面量格式是十进制:
var intNum=55; //整数
八进制字面量的第一位必须是零:
var octalNum=070; //八进制的56
十六进制字面量的前两位必须是0x:
var hexlNum=0xA; //十六进制的10
2).浮点数值
var floatNum=1.1;
3).数值范围
负数,则被转换成-Infinity(负无穷);
正数,则被转换成Infinity(正无穷)。
4).NaN
即非数值,是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况。
5).数值转换
有3个函数可以把非数值转化成数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。
Number()函数的转换规则如下:
如果是Boolean值,true和false将分别被转换为1和0
如果是是数字值,只是简单的传入和返回
如果是null值,返回0
如果是undefined,返回NaN
如果是字符串,遵循下列规则:
如果字符串中只包含数字,则将其转换为十进制数值,级“1”会变成1,“123”会变成123,而“011”会变成11(前面的0被忽略了)
如果字符串中只包含有效的浮点格式,如“1.1”,则将其转换为对应浮点数值(同样,也会忽略前导零)
如果字符串中只包含有效的十六进制格式,例如“0xf”,则将其转换为相同大小的十进制整数值
如果字符串是空的(不包含任何字符),则将其转换为0
如果字符串中包含除上述格式之外的字符,则将其转换为NaN
如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()把各种数据类型转换为数值确实有点复杂。
6.String类型
String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号(“”)或单引号(‘’)表示。
7.Object类型
这个值是对象或null。ECMAScript中的对象是一组数据和功能的集合。
var o=new Object();
三.日期对象
var time=new Date();
var y=time.getFullYear(); //获取当前年份
var m=time.getMonth()+1; //获取当前月份
var d=time.getDate(); //获取当前日
var h=time.getHours(); //获取当前小时数
var m1=time.getMinutes(); //获取当前分钟数
var s=time.getSeconds(); //获取当前秒数
document.write(y+"年"+m+"月"+d+"日"+h+":"+m1+":"+s);
四.数学对象Math
1.
1). Math.E
Math.E属性代表算术常量e,即自然对数的底数,其值近似于2.71828。
2).Math.LN2
此属性就是loge2,即2的自然对数,其值近似于0.69314718055994528623。
3).Math.LN10
Math.LN10就是loge10,即10的自然对数,其值近似于 2.3025850929940459011。
4).Math.LOG2E
Math.LOG2E就是log2e,即以2为底e的对数,其值近似于1.442695040888963387。
5).Math.LN10
Math.LN10就是loge10,即10的自然对数,其值近似于 2.3025850929940459011。
6).Math.PI
Math.PI属性就是π,即圆的周长和它的直径之比。
7).Math.SQRT1_2
Math.SQRT1_2属性返回2的平方根的倒数,这个值近似为0.7071067811865476。
8).Math.SQRT2
Math.SQRT2属性返回2的平方根,此值近似为 1.4142135623730951。
2.Math.abs() //返回数值的绝对值。
3.Math.sin() //返回一个数字的正弦。
4.Math.cos() //返回指定数字的余弦。
5.Math.acos() //返回一个数的反余弦。
6.Math.asin() //返回一个数的反正弦值。
注:如果参数x超过了-1.0 ~ 1.0的范围,那么浏览器将返回NaN。parameter:必需、必须是一个数值,该值介于-1.0 ~ 1.0之间。
7.Math.acos() //返回一个数的反余弦。
8.Math.atan() //返回数字的反正切值。
9.Math.ceil() //将数字进行向上取整。
10.Math.floor() //将数字进行向下取整。
11.Math.max() //返回指定的数中较大的一个。
console.log(Math.max());
//如果没有参数,则返回-Infinity。
console.log(Math.max(NaN,5));
//如果某个参数为NaN,则返回NaN。
console.log(Math.max(6,5));
//筛选两个参数中最大的那个数字,6。
12.Math.min() //返回指定数字中较小的一个。
console.log(Math.min());
//如果没有参数,则返回Infinity。
console.log(Math.min(NaN,5));
//如果某个参数为NaN,则返回NaN。
console.log(Math.min(4,5));
//筛选参数列表中的最小值,4。
13.Math.pow() //返回x的y次幂的值。
Math.pow(x,y)
//x:必需,底数,必须是数字。
//y:必需,幂数,必须是数字。
console.log(Math.pow(4,5));
14.Math.sqrt(x) //返回一个数的平方根。
console.log(Math.sqrt(4));
15.Math.round() //对参数进行四舍五入操作。
16.Math.random() //返回介于0 ~ 1之间的一个随机数。
特别说明:返回值包括0,但是不包括1。
五.倒计时时间
var time=new Date();
var furter=new Date(2017,6,11,0,0,0);
var dis=(Math.floor((furter.getTime()-time.getTime())/1000));
var d=Math.floor(dis/86400); //天
var h=Math.floor(dis%86400/3600); //时
var m=Math.floor(dis%86400%3600/60); //分
var s=Math.floor(dis%60); //秒
六.定时器
function go(){
alert(1);
}go();
setInterval(go,1000); //1000ms=1s
1.时间定时器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="box">
</div>
<script>
var obox=document.getElementById("box");
function go(){
var time=new Date();
var y=time.getFullYear();
var m=time.getMonth()+1;
var d=time.getDate();
var h=time.getHours();
var m1=time.getMinutes();
var s=time.getSeconds();
obox.innerHTML=y+"年"+m+"月"+d+"日"+h+"时"+m1+"分 "+s+"秒";
}
go();
setInterval(go,1000);
</script>
</body>
</html>
2.倒计时计时器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="box">
</div>
<script>
var obox=document.getElementById("box");
function go(){
var time=new Date();
var furter=new Date(2017,6,11,0,0,0);
var dis=(Math.floor((furter.getTime()-time.getTime())/1000));
var d=Math.floor(dis/86400);
var h=Math.floor(dis%86400/3600);
var m=Math.floor(dis%86400%3600/60);
var s=Math.floor(dis%60);
obox.innerHTML=d+"天"+h+"小时"+m+"分钟"+s+"秒";
}
go();
setInterval(go,1000);
</script>
</body>
</html>
3.钟表计时器
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
html,body{margin: 0;padding: 0;}
div{width: 600px;height: 600px;}
#box{background: url(clock.jpg) no-repeat center center ;margin: 0 auto;} //url中插入表盘图片
#h{background: url(hour.png) no-repeat center center;position: absolute;} //url中插入时针图片
#m{background: url(minute.png) no-repeat center center;position: absolute;} //url中插入分针图片
#s{background: url(second.png) no-repeat center center;position: absolute;} //url中插入秒针图片
</style>
</head>
<body>
<div id="box">
<div id="h">
</div>
<div id="m">
</div>
<div id="s">
</div>
</div>
<script>
var oh=document.getElementById("h");
var om=document.getElementById("m");
var os=document.getElementById("s");
function go(){
var time=new Date();
var h=time.getHours();
oh.style.transform='rotate('+h*30+'deg)';
var m=time.getMinutes();
om.style.transform='rotate('+m*6+'deg)';
var s=time.getSeconds();
os.style.transform='rotate('+s*6+'deg)';
}
go();
setInterval(go,1000);
</script>
</body>
</html>
七.选项卡
1.选项卡顺序
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
#ul1 li{width: 300px;height: 50px;background: greenyellow;list-style: none;text-align: center;margin-bottom: 10px;line-height: 50px;}
</style>
</head>
<body>
<ul id="ul1">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
<script>
var oli=document.getElementById("ul1").getElementsByTagName("li");
for(var i=0;i<oli.length;i++){
oli[i].on=i;
oli[i].οnclick=function(){
alert(this.on);
}
}
</script>
</body>
</html>
2.单项选项卡
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
*{font-size: 16px;padding: 0;margin: 0;}
li{list-style: none;}
#box{width: 488px;margin: 20px auto;border: 1px solid #ADFF2F;}
#box li{float: left;width: 120px;height: 40px;text-align: center;line-height: 40px;font-family: "微软雅黑";border: 1px solid #ADFF2F;}
#box div{clear: both;display: none;height: 60px;text-align: center;line-height: 60px;}
#box div.active{display: block;}
.red{background: #ADFF2F;}
</style>
</head>
<body>
<div id="box">
<ul>
<li>tab1</li>
<li>tab2</li>
<li>tab3</li>
<li>tab4</li>
</ul>
<div class="active">111</div>
<div>222</div>
<div>333</div>
<div>444</div>
</div>
<script>
var oli=document.getElementById("box").getElementsByTagName("li");
var odiv=document.getElementById("box").getElementsByTagName("div");
// alert(odiv.length);
for(var i=0;i<oli.length;i++){
oli[i].on=i;
oli[i].οnclick=function(){
for(var i=0;i<oli.length;i++){
oli[i].className="";
odiv[i].style.display="none";
}
this.className="red";
odiv[this.on].style.display="block";
}
}
</script>
</body>
</html>
3).多项选项卡
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
*{font-size: 16px;padding: 0;margin: 0;}
L i{list-style: none;}
.box{width: 488px;margin: 20px auto;border: 1px solid #ADFF2F;}
.box li{float: left;width: 120px;height: 40px;text-align: center;line-height: 40px;font-family: "微软雅黑";border: 1px solid #ADFF2F;}
.box div{clear: both;display: none;height: 60px;text-align: center;line-height: 60px;}
.box div.active{display: block;}
.red{background: #ADFF2F;}
</style>
</head>
<body>
<div class="box" id="tet">
<ul>
<li>tab1</li>
<li>tab2</li>
<li>tab3</li>
<li>tab4</li>
</ul>
<div class="active">111</div>
<div>222</div>
<div>333</div>
<div>444</div>
</div>
<div class="box" id="tet1">
<ul>
<li>tab1</li>
<li>tab2</li>
<li>tab3</li>
<li>tab4</li>
</ul>
<div class="active">111</div>
<div>222</div>
<div>333</div>
<div>444</div>
</div>
<div class="box" id="tet2">
<ul>
<li>tab1</li>
<li>tab2</li>
<li>tab3</li>
<li>tab4</li>
</ul>
<div class="active">111</div>
<div>222</div>
<div>333</div>
<div>444</div>
</div>
<script>
tab("tet","click");
tab("tet1","click");
tab("tet2","click");
function tab(id,event){
var oid=document.getElementById(id);
var oli=oid.getElementsByTagName("li");
var odiv=oid.getElementsByTagName("div");
for(i=0;i<oli.length;i++){
(function(index){
oli[index].addEventListener(event,
function(){
for(var i=0;i<oli.length;i++){
oli[i].className="";
odiv[i].style.display="none";
}
this.className="red";
odiv[index].style.display="block";
})
})(i)
}
}
</script>
</body>
</html>
附件1(验证码):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
body,html{margin: 0;padding: 0;font-size: 26px;text-align: center;font-family: "微软雅黑";line-height: 35px;}
#box {width: 260px;height: 100px;padding: 20px;background: #ccc;margin: 30px auto;}
#txt1{width: 100px;height: 35px;padding: 5px 10px;float: left;margin-right: 10px;font-size: 26px;text-align: center;font-family: "微软雅黑";line-height: 35px;}
#yzm{width: 100px;height: 35px;padding: 5px 10px;float: left;background: #ffffff;}
button{width: 220px;height: 35px;margin-top: 10px;margin-left: 5px;background: green;border: 1px solid green;color: white;font-size: 16px;}
</style>
</head>
<body>
<div id="box">
<input type="text" id="txt1" />
<span id="yzm"></span>
<button>确定</button>
</div>
<script>
var oinput = document.getElementsByTagName("input")[0];
var ospan = document.getElementsByTagName("span")[0];
var obtn=document.getElementsByTagName("button")[0];
//验证码
var arr = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h", "j", "k", "l", "z", "x", "c", "v", "b", "n", "m"];
var length=arr.length;
var str="";
function yanzheng(){
for(var i=0;i<6;i++){
var num=Math.floor(Math.random()*length);
str+=arr[num];
}
ospan.innerHTML=str;
}
yanzheng();
//点击确定
obtn.οnclick=function(){
if(oinput.value==""){
alert("请输入验证码!");
}
else if(oinput.value.toLowerCase()!=ospan.innerHTML.toLowerCase()){
alert("验证码错误!");
oinput.value="";
}
else{
alert("验证码正确。");
}
}
</script>
</body>
</html>
附件2(斑马线):
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
table{width: 100%;height: 500px;}
table td{border: 1px solid #ADFF2F;}
</style>
</head>
<body>
<table cellpadding="0" cellspacing="0">
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
<tr>
<td></td>
</tr>
</table>
<script>
var tab=document.getElementsByTagName("table")[0];
var otr=tab.getElementsByTagName("tr");
// alert(otr.length)
for(i=0;i<otr.length;i++){
if(i%2==0){
otr[i].style.background="#ADFF2F";
}
else{
otr[i].style.background="pink";
}
}
</script>
</body>
</html>