1.Array与Hash
用几个案例来一起看一下内置对象:
1.案例1
要求利用变量保存数据,再用document.write()将变量输出。要求是,显示一组水浒传人物信息,包含4个元素,每一个元素又包含名字和绰号。那么只需要把这8个数据分别保存到8个变量中,然后将变量打印即可。
var name1, name2, name3, name4;
var byname1, byname2, byname3, byname4;
name1 = "林冲", name2 = "吴用", name3 = "李逵",name4 = "史进";
byname1 = "豹子头", byname2 = "智多星", byname3 = "黑旋风", byname4 = "九纹龙";
document.write("姓名 绰号<br>")
document.write("---------------<br>")
document.write(name1 + " " + byname1 + "<br>")
document.write(name2 + " " + byname2 + "<br>")
document.write(name3 + " " + byname3 + "<br>")
document.write(name4 + " " + byname4 + "<br>")
对于上面的代码,变量过多,操作繁复,而且不易维护,这时可以使用js中的数组。
数组
数组就是某类数据的集合,数据类型可以是整型,字符串。
- 数组名的定义规则与变量相同
- 数组内元素的数据类型可以不一样
- 初始化数组与java不一样,需要用中括号
下面,利用数组完成案例1:
var name = ["林冲" , "吴用", "李逵", "史进"];
var byname = ["豹子头", "智多星", "黑旋风", "九纹龙"];
document.write("姓名 绰号<br>")
document.write("--------------------------<br>")
for (var i = 0, j = 0; i < name.length && j < byname.length; i++, j++){
document.write(name[i])
document.write(" ")
document.write(byname[j] + "<br>")
}
上面出现了错位,解决这种问题,可以使用hash来解决。
Hash表
- hash表中每一个元素都由一个键值对组成,键值之间用:“:”分割,实现键值对应
- 元素和元素之间用逗号隔开
利用hash来完成案例1:
var hash = {
"林冲":"豹子头",
"吴用":"智多星",
"李逵":"黑旋风",
"史进":"九纹龙"
};
document.write("姓名 绰号<br>")
document.write("--------------------------<br>")
for (var k in hash){
document.write(k + " " + hash[k] + "<br>")
}
2.内置对象Date
Date是js的内置对象,用来处理js日期和时间,所有操作均需要通过调用date对象提供的方法实现。
-
定义Date对象需要用被我关键字,并且注意Date首字母必修大写。
-
getDate获取当前的日期,显示11
-
getDay过去当前是周几,如果是周日,显示0
-
getHours获取当前的小时
-
getMinutes获取当前的分钟
-
getMonth获取当前的月份,如果是12月,则显示11
-
getSeconds获取当前的秒
-
getTime获取当前的时间,并且以毫秒为单位
-
getYear获取当前的年份
-
setDate设置当前的日期(0~30)
-
setHours设置小时(0~23)
-
setMinutes设置分钟(0~59)
-
setTime设置时间
-
setYear设置年份
-
setMonth设置月份(0~11)
2.1案例2
利用js显示时间,并且根据当前的时间显示欢迎信息,12点前显示上午好,12-19点显示下午好,否则显示晚上好。周一到周五显示工作愉快,周六周日显示休假开心。
利用getHour得到当前的小时,利用getDay得到当前是星期几,利用if条件语句实现
var d = new Date("Jan, 4, 2022, 18:54:00");
document.write("当前时间" + d.toDateString() + "<br><br>");
if(d.getHours() <= 12){
document.write("早上好!");
}else if(d.getHours() < 19){
document.write("下午好!");
}else{
document.write("晚上好!");
}
if(d.getDay() >= 1 && d.getDay() <= 5){
document.write("工作愉快!");
}else{
document.write("休假开心!");
}
2.2案例3
利用js制作简易日历,只显示本月日期,当前日期字体设置为红色。
利用Date对象获取当前日期,并保存到变量中。创建循环变量,通过循环打印输出当前日期,仅打印本月日期,并判断如果是今天,则设置为红色打印。本月第一周中的上月日期需要用占位符显示。
var date = new Date();
var today = date.getDay();
var month = date.getMonth();
var week = data.getDay();
document.write("日 一 二 三 四 五 六<br>");
for (var i = 0; i <= week; i++){
document.write(" ");
}
var temp = 1;
date.setDate(temp);
while (date.getMonth() == month){
var currentDate = date.getDate();
if(currentDate < 10){
document.write("0");
}
if (currentDate == today){
document.write("<font color='red'>" + currentDate + "</font>");
}else{
document.write(currentDate + " ");
}
if(date.getDate() == 6){
document.write("<br>");
}
temp++;
date.setDate(temp)
}