数组的常用方法:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
<!--数组对象的常用方法-->
// 1:concat()方法
// 参数:2个或多个数组
// 返回值:一个新数组
// 功能:var a=[1,2,3]
// a.concat(4,[5,[6,7]]) 返回a=[1,2,3,4,5,[6,7]]
// 2:join()
// 参数:无参:默认以逗号隔开,有参:以自定义的分隔符隔开
// 返回值:字符串
// 功能:
// 3:pop()数组最后一个元素 弹栈
// 参数:无参
// 返回值:删除的那一个元素
// 功能:var a=[1,2,3]
// a.pop() //3
// 4:push()压入到数组的尾部 压栈
// 5:reverse()颠倒数组中的元素顺序
// 6:shift()压入数组的尾部 队列
// 功能:移出队列的头部--》数组的头部(数组的第一个元素)
// 参数:无参
// 返回值:数组原来的第一个元素
// 7:unshift()入队 队列
// 功能:数组的头部插入元素
// 参数:若干个元素
// 返回值:数组的新长度
// var a=[1,2,3]
// a.unshift([5,6,7])
// a=[[5,6,7],1,2,3]
// 8:slice()截取数组
// 功能:截取数组的一部分
// 参数:slice(start,end)左闭右开
// 返回值:新数组
// 注意:截取的顺序必须是从左往右
// 9:sort()排序函数
// 参数:函数 比较函数--》按什么排序
// var arr=[
// {name:"丽丽",year:"48",salary:3500},
// {name:"老王",year:"37",salary:12500},
// {name:"张三",year:"70",salary:6000}
// ];
// /*比较函数---》为了给sort提供信息*/
// function compare(a,b){
// return b.year-a.year;/*从大到小排*/
// return a.year-b.year;/*从小到大排*/
// }
// var obj=arr.sort(compare)
// console.log(obj)
// for(var index in obj){
// console.log(obj[index])
// }
// 10:splice()插入或删除元素
// 参数:splice(删除或插入的下标,删除的个数,插入的数据1、数据2.。。)
// 开始下标 删除的个数
// var arr=[1,2,3,4,5]
// arr.splice(2,2)
// 插入 第二个参数一定要写,写0
// arr.splice(2,0,"abc","12324")
</script>
</body>
</html>
求数组的最大最小值:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var arr=[22,33,44,54,12,87,34]
var max=arr[0]
var min=arr[0]
for (var i=0;i<arr.length;i++){
if(max<arr[i]){
max=arr[i]
}
else if (min>arr[i]){
min=arr[i]
}
}
alert("max="+max+"min="+min)
</script>
</body>
</html>
函数:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--函数:作为js的第一等公民
1:定义:函数首+函数体 并不占用内存空间
function 函数名(){
函数体
return 结果;(如果没写返回值则默认为return undefined;)
}
2:语法
两种方法:
1:函数声明
2:表达式法
3:返回值 参数
4:调用(自己调用自己->递归) -->
<script>
// //函数声明
//js全局的域 window浏览器对象>文档树document
// function add(a,b){
// return a+b;
// }
// var c=add(1,2);
// console.log(c)
// // 实参对象 arguments 保存实参数据 数据类型:数组
// // var sum=0;//显式全局变量,生命周期:打开浏览器到关闭浏览器
// function add(a){
// var sum=0; //局部变量 生命周期:函数开始调用到函数调用结束
// // sum=0 //隐式全局变量==》window.sum
// for (var i=0;i<arguments.length;i++){
// sum+=arguments[i]
// }
// return sum;
// }
// var c=add(1,2,3,4,5,6,7,8,9);
// console.log(c)
// console.log("add代表"+add)
//2:函数表达式 利用变量 保存匿名函数的地址
var sub=function (a,b) {
return a-b
}
sub(10,7);
var a=sub;
a(11,7)
</script>
</body>
</html>
省市联动:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--Time: Author: Function: Desc:-->
</head>
<body>
<script>
/*省市联动*/
var provices=["浙江省","山西省","河北省"]
var cities=[["杭州市","温州市","宁波市"],["太原市","大同市","长治市"],["保定","邯郸","石家庄","邢台"]]
// 遍历山西省的所有市:循环嵌套
// cities数组 每一个元素是各省对应的市区数组
for(var i=0;i<cities.length;i++){
if (i===1){
for(var j=0;j<cities[i].length;j++){
// if(j>1){
// break;// 取前两个城市 跳转语句,跳出一层循环(终止)
// }
// if (j===1){
// continue;// 跳转语句,跳出一次循环,继续下一次(中断) 去掉该省份的第二个城市
// }
// 输出方法:向可视区域body写:document.write(参数)
document.write("<span style='color: red;font-size: 30px;margin-left: 100px'>"+cities[i][j]+"</span>"+"<br>")
}
}
}
</script>
</body>
</html>
DOM引入:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button id="btn">点我弹框</button>
<div id="dv">我是div</div>
<script>
//面向对象 基于事件(点击onclink单击/ondbclink双击、滚动条onscroll、聚焦onfocus、离焦onblur、按下键盘、抬起键盘、表单提交onsubmit)
//点击按钮弹框 对象:按钮 事件:点击事件 函数:弹框
//window 顶级对象--》document 文档对象(获取元素的方法)
// 1:通过id获取元素:document.getElementById()
var btn=document.getElementById('btn')
var mydiv=document.getElementById("dv")
//如何给元素绑定事件:把事件当成元素的属性 zhangsan.year=24
btn.onclick=function () {//回调函数
alert("点到了")
mydiv.style.width="300px";
mydiv.style.height="400px";
mydiv.style.backgroundColor="green"
}
</script>
</body>
</html>
9*9乘法表:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--表格形式-->
<style>
tr,td{
border:black 1px solid;
}
</style>
</head>
<body>
<script>
document.write("<table>")
for(var i=1;i<=9;i++){
document.write("<tr>"+"</tr>")
for(var j=1;j<=i;j++){
document.write("<td>"+j+"*"+i+"="+i*j+"</td>")
}
}
document.write("</table>")
</script>
</body>
</html>
思考题:对于函数a()和b(),a(b)和a(b())是否一样?
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
function a(i) {
return i+1
}
function b(j) {
return j+10
}
var x=a(b)
console.log(x)//输出结果为function b(j){return j+10}1
var y=a(b())
console.log(y)//输出结果为NaN,即先执行了b(),返回NaN,后执行a(NaN),返回NaN
var z=a(b(10))
console.log(z)//输出结果为21,即先执行了b(10),返回20,后执行a(20),返回21
// 所以,如果函数a的参数是b,则将函数b的函数名和函数体作为参数传给a
// 如果函数a的参数是b(),则将函数b的运行结果作为参数传给函数a
</script>
</body>
</html>