咱们为了区分盒子,能够用BOX1,BOX2等名称表明不一样盒子,BOX1就是盒子的名字(也就是变量的名字)。javascript
咱们赶快给变量取个好名字吧!变量名字能够任意取,只不过取名字要遵循一些规则:html
1.必须以字母、下划线或美圆符号开头,后面能够跟字母、下划线、美圆符号和数字。以下:java
正确: mysum _mychar $numa1
错误: 6num //开头不能用数字 %sum //开头不能用除(_ $)外特殊符号,如(% + /等) sum+num //开头中间不能使用除(_ $)外特殊符号,如(% + /等)
2.变量名区分大小写,如:A与a是两个不一样变量。算法
3.不容许使用JavaScript关键字和保留字作变量名。编程
使用数组以前首先要建立,并且须要把数组自己赋至一个变量。比如咱们出游,要组团,并给团定个名字“云南之旅”。数组
建立数组语法:浏览器
var myarray=new Array();
咱们建立数组的同时,还能够为数组指定长度,长度可任意指定。dom
var myarray= new Array(8); //建立数组,存储8个数据。
注意:
1.建立的新数组是空数组,没有值,如输出,则显示undefined。
2.虽然建立数组时,指定了长度,但实际上数组都是变长的,也就是说即便指定了长度为8,仍然能够将元素存储在规定长度之外。编辑器
1.在右边编辑器的第7行,使用new Array()
建立一个新数组,并保存在myarr变量中
2.验证编辑器的第8行输出数组第一个值,在结果窗口中是不是undefined
。函数
数组建立好,接下来咱们为数组赋值。咱们把数组看似旅游团的大巴车,大巴车里有不少位置,每一个位置都有一个号码,顾客要坐在哪一个位置呢?
第一步:组个大巴车 第二步:按票对号入座 大巴车的1号座位是张三 大巴车的2号座位是李四
数组的表达方式:
第一步:建立数组var myarr=new Array(); 第二步:给数组赋值 myarr[1]=" 张三"; myarr[2]=" 李四";
下面建立一个数组,用于存储5我的的数学成绩。
var myarray=new Array(); //建立一个新的空数组 myarray[0]=66; //存储第1我的的成绩 myarray[1]=80; //存储第2我的的成绩 myarray[2]=90; //存储第3我的的成绩 myarray[3]=77; //存储第4我的的成绩 myarray[4]=59; //存储第5我的的成绩
注意:数组每一个值有一个索引号,从0开始。
咱们还能够用简单的方法建立上面的数组和赋值:
第一种方法:
var myarray = new Array(66,80,90,77,59);//建立数组同时赋值
第二种方法:
var myarray = [66,80,90,77,59];//直接输入一个数组(称 “字面量数组”)
注意:数组存储的数据能够是任何类型(数字、字符、布尔值等)
若是咱们想知道数组的大小,只需引用数组的一个属性length。Length属性表示数组的长度,即数组中元素的个数。
语法:
myarray.length; //得到数组myarray的长度
注意:由于数组的索引老是由0开始,因此一个数组的上下限分别是:0和length-1。如数组的长度是5,数组的上下限分别是0和4。
var arr=[55,32,5,90,60,98,76,54];//包含8个数值的数组arr document.write(arr.length); //显示数组长度8 document.write(arr[7]); //显示第8个元素的值54
同时,JavaScript数组的length属性是可变的,这一点须要特别注意。
arr.length=10; //增大数组的长度 document.write(arr.length); //数组长度已经变为10
数组随元素的增长,长度也会改变,以下:
var arr=[98,76,54,56,76]; // 包含5个数值的数组 document.write(arr.length); //显示数组的长度5 arr[15]=34; //增长元素,使用索引为15,赋值为34 alert(arr.length); //显示数组的长度16
在右边编辑器中,已建立数组mynum,并赋值65,90,88,98。
1. 在右边编辑器的第8行,使用length属性显示数组长度。
一维数组,咱们当作一组盒子,每一个盒子只能放一个内容。
一维数组的表示: myarray[ ]
二维数组,咱们当作一组盒子,不过每一个盒子里还能够放多个盒子。
二维数组的表示: myarray[ ][ ]
注意: 二维数组的两个维度的索引值也是从0开始,两个维度的最后一个索引值为长度-1。
1. 二维数组的定义方法一
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 } }
注意: 关于for 循环语句,请看第四章4-5 。
将上面二维数组,用表格的方式表示:
2. 二维数组的定义方法二
var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3, ]]
3. 赋值
myarr[0][1]=5; //将5的值传入到数组中,覆盖原有值。
说明: myarr[0][1] ,0 表示表的行,1表示表的列。
试一试,建立二维数组(一维长度3,二维长度6),值为一维数组和二维数组索引值的积,如myarr[2][5]=2*5。
在右边编辑器的script标签内,建立该二维数组。
continue的做用是仅仅跳过本次循环,而整个循环体继续执行。
语句结构:
for(初始条件;判断条件;循环后条件值更新) { if(特殊状况) { continue; } 循环代码 }
上面的循环中,当特殊状况发生的时候,本次循环将被跳过,然后续的循环则不会受到影响。比如输出10个数字,若是数字为5就不输出了。
执行结果:
注:上面的代码中,num=5的那次循环将被跳过。
JavaScript 建立动态页面。事件是能够被 JavaScript 侦测到的行为。 网页中的每一个元素均可以产生某些能够触发 JavaScript 函数或程序的事件。
好比说,当用户单击按钮或者提交表单数据时,就发生一个鼠标单击(onclick)事件,须要浏览器作出处理,返回给用户一个结果。
主要事件表:
鼠标通过事件,当鼠标移到一个对象上时,该对象就触发onmouseover事件,并执行onmouseover事件调用的程序。
现实鼠标通过"肯定"按钮时,触发onmouseover事件,调用函数info(),弹出消息框,代码以下:
运行结果:
鼠标移开事件,当鼠标移开当前对象时,执行onmouseout调用的程序。
当把鼠标移动到"登陆"按钮上,而后再移开时,触发onmouseout事件,调用函数message(),代码以下:
运行结果:
onblur事件与onfocus是相对事件,当光标离开当前得到聚焦对象的时候,触发onblur事件,同时执行被调用的程序。
以下代码, 网页中有用户和密码两个文本框。当前光标在用户文本框内时(即焦点在文本框),在光标离开该文本框后(即失焦时),触发onblur事件,并调用函数message()。
运行结果:
选中事件,当文本框或者文本域中的文字被选中时,触发onselect事件,同时调用的程序就会被执行。
以下代码,当选中用户文本框内的文字时,触发onselect 事件,并调用函数message()。
运行结果:
经过改变文本框的内容来触发onchange事件,同时执行被调用的程序。
以下代码,当用户将文本框内的文字改变后,弹出对话框“您改变了文本内容!”。
运行结果:
当用户退出页面时(页面关闭、页面刷新等),触发onUnload事件,同时执行被调用的程序。
注意:不一样浏览器对onunload事件支持不一样。
以下代码,当退出页面时,弹出对话框“您肯定离开该网页吗?”。
运行结果:(IE浏览器)
使用JS完成一个简单的计算器功能。实现2个输入框中输入整数后,点击第三个输入框能给出2个整数的加减乘除。
提示:获取元素的值设置和获取方法为:例:赋值:document.getElementById(“id”).value = 1; 取值:var = document.getElementById(“id”).value;
第一步: 建立构建运算函数count()。
第二步: 获取两个输入框中的值和获取选择框的值。
提示:document.getElementById( id名 ).value 获取或设置 id名的值。
第三步: 获取经过下拉框来选择的值来改变加减乘除的运算法则。
提示:使用switch判断运算法则。
第四步: 经过 = 按钮来调用建立的函数,获得结果。
注意: 使用parseInt()函数可解析一个字符串,并返回一个整数。
eg.
<!DOCTYPE html>
<html>
<head>
<title> 计算器</title>
<script type="text/javascript">
function count(){
var first = parseInt(document.getElementById("txt1").value);
var second = parseInt(document.getElementById("txt2").value);
var select=document.getElementById("select").value;
case +:
document.getElementById("fruit").value= first + second;
break;
case -:
document.getElementById("fruit").value = first - second;
break;
case *:
document.getElementById("fruit").value = first * second;
break;
case /:
document.getElementById("fruit").value = first / second;
break;
default:
break;
}
</script>
</head>
<body>
<input type='text' id='txt1' />
<select id='select'>
<option value='+'>+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type='text' id='txt2' />
<input type='button' value=' = ' onclick="count()"/> <!--经过 = 按钮来调用建立的函数,获得结果-->
<input type='text' id='fruit' />
</body>
</html>
JavaScript 中的全部事物都是对象,如:字符串、数值、数组、函数等,每一个对象带有属性和方法。
对象的属性:反映该对象某些特定的性质的,如:字符串的长度、图像的长宽等;
对象的方法:可以在对象上执行的动做。例如,表单的“提交”(Submit),时间的“获取”(getYear)等;
JavaScript 提供多个内建对象,好比 String、Date、Array 等等,使用对象前先定义,以下使用数组对象:
var objectName =new Array();//使用new关键字定义对象 或者 var objectName =[];
访问对象属性的语法:
objectName.propertyName
如使用 Array 对象的 length 属性来得到数组的长度:
var myarray=new Array(6);//定义数组对象 var myl=myarray.length;//访问数组长度length属性
以上代码执行后,myl的值将是:6
访问对象的方法:
objectName.methodName()
如使用string 对象的 toUpperCase() 方法来将文本转换为大写:
var mystr="Hello world!";//建立一个字符串 var request=mystr.toUpperCase(); //使用字符串对象方法
以上代码执行后,request的值是:HELLO WORLD!
日期对象能够储存任意一个日期,而且能够精确到毫秒数(1/1000 秒)。
定义一个时间对象 :
var Udate=new Date();
注意:使用关键字new,Date()的首字母必须大写。
使 Udate 成为日期对象,而且已有初始值:当前时间(当前电脑系统时间)。
若是要自定义初始值,能够用如下方法:
var d = new Date(2012, 10, 1); //2012年10月1日 var d = new Date('Oct 1, 2012'); //2012年10月1日
咱们最好使用下面介绍的“方法”来严格定义时间。
访问方法语法:“<日期对象>.<方法>”
Date对象中处理时间和日期的经常使用方法:
get/setFullYear()
返回/设置年份,用四位数表示。
var mydate=new Date();//当前时间2014年3月6日 document.write(mydate+"<br>");//输出当前时间 document.write(mydate.getFullYear()+"<br>");//输出当前年份 mydate.setFullYear(81); //设置年份 document.write(mydate+"<br>"); //输出年份被设定为 0081年。
注意:不一样浏览器, mydate.setFullYear(81)结果不一样,年份被设定为 0081或81两种状况。
结果:
Thu Mar 06 2014 10:57:47 GMT+0800 2014 Thu Mar 06 0081 10:57:47 GMT+0800
注意:
1.结果格式依次为:星期、月、日、年、时、分、秒、时区。(火狐浏览器)
2. 不一样浏览器,时间格式有差别
getDay() 返回星期,返回的是0-6的数字,0 表示星期天。若是要返回相对应“星期”,经过数组完成,代码以下:
<script type="text/javascript"> var mydate=new Date();//定义日期对象 var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]; //定义数组对象,给每一个数组项赋值 var mynum=mydate.getDay();//返回值存储在变量mynum中 document.write(mydate.getDay());//输出getDay()获取值 document.write("今天是:"+ weekday[mynum]);//输出星期几 </script>
注意:以上代码是在2014年3月7日,星期五运行。
结果:
5
今天是:星期五
get/setTime() 返回/设置时间,单位毫秒数,计算从 1970 年 1 月 1 日零时到日期对象所指的日期的毫秒数。
若是将目前日期对象的时间推迟1小时,代码以下:
<script type="text/javascript"> var mydate=new Date(); document.write("当前时间:"+mydate+"<br>"); mydate.setTime(mydate.getTime() + 60 * 60 * 1000); document.write("推迟一小时时间:" + mydate); </script>
结果:
当前时间:Thu Mar 6 11:46:27 UTC+0800 2014
推迟一小时时间:Thu Mar 6 12:46:27 UTC+0800 2014
注意:1. 一小时 60 分,一分 60 秒,一秒 1000 毫秒
2. 时间推迟 1 小时,就是: “x.setTime(x.getTime() + 60 * 60 * 1000);”
get/setTime() 返回/设置时间,单位毫秒数,计算从 1970 年 1 月 1 日零时到日期对象所指的日期的毫秒数。
若是将目前日期对象的时间推迟1小时,代码以下:
<script type="text/javascript"> var mydate=new Date(); document.write("当前时间:"+mydate+"<br>"); mydate.setTime(mydate.getTime() + 60 * 60 * 1000); document.write("推迟一小时时间:" + mydate); </script>
结果:
当前时间:Thu Mar 6 11:46:27 UTC+0800 2014
推迟一小时时间:Thu Mar 6 12:46:27 UTC+0800 2014
注意:1. 一小时 60 分,一分 60 秒,一秒 1000 毫秒
2. 时间推迟 1 小时,就是: “x.setTime(x.getTime() + 60 * 60 * 1000);”
在以前的学习中已经使用字符串对象了,定义字符串的方法就是直接赋值。好比:
var mystr = "I love JavaScript!"
定义mystr字符串后,咱们就能够访问它的属性和方法。
访问字符串对象的属性length:
stringObject.length; 返回该字符串的长度。
var mystr="Hello World!"; var myl=mystr.;length
以上代码执行后,myl 的值将是:12
访问字符串对象的方法:
使用 String 对象的 toUpperCase() 方法来将字符串小写字母转换为大写:
var mystr="Hello world!"; var mynum=mystr.toUpperCase();
以上代码执行后,mynum 的值是:HELLO WORLD!
charAt() 方法可返回指定位置的字符。返回的字符是长度为 1 的字符串。
语法:
stringObject.charAt(index)
参数说明:
注意:1.字符串中第一个字符的下标是 0。最后一个字符的下标为字符串长度减一(string.length-1)。
2.若是参数 index 不在 0 与 string.length-1 之间,该方法将返回一个空字符串。
如:在字符串 "I love JavaScript!" 中,返回位置2的字符:
<script type="text/javascript"> var mystr="I love JavaScript!" document.write(mystr.charAt(2)); </script>
注意:一个空格也算一个字符。
以上代码的运行结果:
l
eg.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>string对象 </title>
<script type="text/javascript">
var mystr="I love JavaScript!"
document.write(mystr.charAt(mystr.length-1));
</script>
</head>
<body>
</body>
</html>
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
语法
stringObject.indexOf(substring, startpos)
参数说明:
1.该方法将从头至尾地检索字符串 stringObject,看它是否含有子串 substring。
2.可选参数,从stringObject的startpos位置开始查找substring,若是没有此参数将从stringObject的开始位置查找。
3.若是找到一个 substring,则返回 substring 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。
注意:1.indexOf() 方法区分大小写。
2.若是要检索的字符串值没有出现,则该方法返回 -1。
例如: 对 "I love JavaScript!" 字符串内进行不一样的检索:
<script type="text/javascript"> var str="I love JavaScript!" document.write(str.indexOf("I") + "<br />"); document.write(str.indexOf("v") + "<br />"); document.write(str.indexOf("v",8)); </script>
以上代码的输出:
0 4 9
知识讲解:
split() 方法将字符串分割为字符串数组,并返回此数组。
stringObject.split(separator,limit)
注意:若是把空字符串 ("") 用做 separator,那么 stringObject 中的每一个字符之间都会被分割。
咱们将按照不一样的方式来分割字符串:
使用指定符号分割字符串,代码以下:
var mystr = "www.imooc.com"; document.write(mystr.split(".")+"<br>"); document.write(mystr.split(".", 2)+"<br>");
运行结果:
www,imooc,com www,imooc
将字符串分割为字符,代码以下:
document.write(mystr.split("")+"<br>"); document.write(mystr.split("", 5));
运行结果:
w,w,w,.,i,m,o,o,c,.,c,o,m w,w,w,.,i
运用split()方法,完成如下任务,并输出:
1. 补充右边编辑器第8行,以字符"-"分隔字符串对象mystr。
2. 补充右边编辑器第9行,将字符串对象mystr每一个字符分割。
3. 补充右边编辑器第10行,将字符串对象mystr分割成字符,分割3次。
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
语法:
stringObject.substring(starPos,stopPos)
参数说明:
注意:
1. 返回的内容是从 start开始(包含start位置的字符)到 stop-1 处的全部字符,其长度为 stop 减start。
2. 若是参数 start 与 stop 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。
3. 若是 start 比 stop 大,那么该方法在提取子串以前会先交换这两个参数。
使用 substring() 从字符串中提取字符串,代码以下:
<script type="text/javascript"> var mystr="I love JavaScript"; document.write(mystr.substring(7)); document.write(mystr.substring(2,6)); </script>
运行结果:
JavaScript love
运用substring()方法,完成子字符串的提取:
1.补充右边编辑器第8行,从字符对象mystr中提取World!子字符串。
2. 补充右边编辑器第9行,从字符对象mystr中提取Hello子字符串。
substr() 方法从字符串中提取从 startPos位置开始的指定数目的字符串。
语法:
stringObject.substr(startPos,length)
参数说明:
注意:若是参数startPos是负数,从字符串的尾部开始算起的位置。也就是说,-1 指字符串中最后一个字符,-2 指倒数第二个字符,以此类推。
若是startPos为负数且绝对值大于字符串长度,startPos为0。
使用 substr() 从字符串中提取一些字符,代码以下:
<script type="text/javascript"> var mystr="I love JavaScript!"; document.write(mystr.substr(7)); document.write(mystr.substr(2,4)); </script>
运行结果:
JavaScript! love
运用substr()方法,完成如下任务:
1. 补充右边编辑器第8行,提取字符world!。
2. 补充右边编辑器第9行,提取字符Hello
Math对象,提供对数据的数学计算。
使用 Math 的属性和方法,代码以下:
<script type="text/javascript"> var mypi=Math.PI; var myabs=Math.abs(-15); document.write(mypi); document.write(myabs); </script>
运行结果:
3.141592653589793 15
注意:Math 对象是一个固有的对象,无需建立它,直接把 Math 做为对象使用就能够调用其全部属性和方法。这是它与Date,String对象的区别。
Math 对象属性
Math 对象方法
以上方法不作所有讲解,只讲解部分方法。此节没有任务,快快进入下节学习。
ceil() 方法可对一个数进行向上取整。
语法:
Math.ceil(x)
参数说明:
注意:它返回的是大于或等于x,而且与x最接近的整数。
咱们将把 ceil() 方法运用到不一样的数字上,代码以下:
<script type="text/javascript"> document.write(Math.ceil(0.8) + "<br />") document.write(Math.ceil(6.3) + "<br />") document.write(Math.ceil(5) + "<br />") document.write(Math.ceil(3.5) + "<br />") document.write(Math.ceil(-5.1) + "<br />") document.write(Math.ceil(-5.9)) </script>
运行结果:
1 7 5 4 -5 -5
floor() 方法可对一个数进行向下取整。
语法:
Math.floor(x)
参数说明:
注意:返回的是小于或等于x,而且与 x 最接近的整数。
咱们将在不一样的数字上使用 floor() 方法,代码以下:
<script type="text/javascript"> document.write(Math.floor(0.8)+ "<br>") document.write(Math.floor(6.3)+ "<br>") document.write(Math.floor(5)+ "<br>") document.write(Math.floor(3.5)+ "<br>") document.write(Math.floor(-5.1)+ "<br>") document.write(Math.floor(-5.9)) </script>
运行结果:
0 6 5 3 -6 -6
round() 方法可把一个数字四舍五入为最接近的整数。
语法:
Math.round(x)
参数说明:
注意:
1. 返回与 x 最接近的整数。
2. 对于 0.5,该方法将进行上舍入。(5.5 将舍入为 6)
3. 若是 x 与两侧整数同等接近,则结果接近 +∞方向的数字值 。(如 -5.5 将舍入为 -5; -5.52 将舍入为 -6),以下图:
把不一样的数舍入为最接近的整数,代码以下:
<script type="text/javascript"> document.write(+ "<br>"); document.write(+ "<br>"); document.write(+ "<br>"); document.write(+ "<br>"); document.write(); </script>Math.round(1.6)Math.round(2.5)Math.round(0.49)Math.round(-6.4)Math.round(-6.6)
运行结果:
2 3 0 -6 -7
random() 方法可返回介于 0 ~ 1(大于或等于 0 但小于 1 )之间的一个随机数。
语法:
Math.random();
注意:返回一个大于或等于 0 但小于 1 的符号为正的数字值。
咱们取得介于 0 到 1 之间的一个随机数,代码以下:
<script type="text/javascript"> document.write(Math.random()); </script>
运行结果:
0.190305486195328注意 :由于是随机数,因此每次运行结果不同,可是0 ~ 1的数值。
得到0 ~ 10之间的随机数,代码以下:
<script type="text/javascript"> document.write((Math.random())*10); </script>
运行结果:
8.72153625893887
数组对象是一个对象的集合,里边的对象能够是不一样类型的。数组的每个成员对象都有一个“下标”,用来表示它在数组中的位置,是从零开始的
数组定义的方法:
1. 定义了一个空数组:
var 数组名= new Array();
2. 定义时指定有n个空元素的数组:
var 数组名 =new Array(n);
3.定义数组的时候,直接初始化数据:
var 数组名 = [<元素1>, <元素2>, <元素3>...];
咱们定义myArray数组,并赋值,代码以下:
var myArray = [2, 8, 6];
说明:定义了一个数组 myArray,里边的元素是:myArray[0] = 2; myArray[1] = 8; myArray[2] = 6。
数组元素使用:
数组名[下标] = 值;
注意: 数组的下标用方括号括起来,从0开始。
数组属性:
length 用法:<数组对象>.length;返回:数组的长度,即数组里有多少个元素。它等于数组里最后一个元素的下标加一。
数组方法:
concat() 方法用于链接两个或多个数组。此方法返回一个新数组,不改变原来的数组。
语法
arrayObject.concat(array1,array2,...,arrayN)
参数说明:
注意: 该方法不会改变现有的数组,而仅仅会返回被链接数组的一个副本。
咱们建立一个数组,将把 concat() 中的参数链接到数组 myarr 中,代码以下:
<script type="text/javascript"> var mya = new Array(3); mya[0] = "1"; mya[1] = "2"; mya[2] = "3"; document.write(mya.concat(4,5)+"<br>"); document.write(mya); </script>
运行结果:
1,2,3,4,5 1,2,3
咱们建立了三个数组,而后使用 concat() 把它们链接起来,代码以下:
<script type="text/javascript"> var mya1= new Array("hello!") var mya2= new Array("I","love"); var mya3= new Array("JavaScript","!"); var mya4=mya1.concat(mya2,mya3); document.write(mya4); </script>
运行结果:
hello!,I,love,JavaScript,!