1、函数定义:就是把一些代码包装起来,方便重复使用函数声明之后必须调回,才会执行
2、声明:function 函数名(){ 代码块 }
3、函数表达式: var 函数名=function(){ 执行代码 }
4、函数声明之后,它不会自动执行,需要函数名()调用
注意:函数声明的调用在函数的前面或者后面都可以,但是函数表达式只能在函数后面调用
5、函数参数传递:如果实参比形参少,没有匹配上的是undefined
var n = 0;
var fn = function(x) {
for(var i=1; i<=x; i++){
n += i;
}
}
fn(50);
console.log(n);
6、arguments 是一个对象,即一个类数组(有长度,可以循环,可以通过下标读取每一个,但是不能使用数组的方法)
arguments[0]代表第一个参数,arguments[1]代表第二个参数,依次类推,与形成是一一对应的。arguments只在函数里有。
function fn() {
var sum = 0;
for(var i=0; i<arguments.length; i++){
sum += arguments[i];
}
console.log(sum);
}
fn(1,2,2,4,5,6,7,8);
当实际参数不确定是,可以用arguments,,形式参数省去,然后循环让i<=arguments.length
7、函数中的“this”指向,不是在定义的时候确定的,而是在调用的时候确定的
8、编辑标题案例(文件或标题重命名)
先编辑一条,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
li div:nth-child(2){
display:none;
}
</style>
<script>
window.onload = function () {
// 第一步,先定义li
var aLi = document.getElementsByTagName("li");
// 第二步,定义li中的元素(定义写逻辑时需要的元素)
var span = aLi[0].getElementsByTagName("span")[0];
var input = aLi[0].getElementsByTagName("input")[0];
var div = aLi[0].getElementsByTagName("div"); //把第一个li中的所有div全部赋给div
var a = aLi[0].getElementsByTagName("a");
// 以上的span,input,div,a都是数组
// 第三步,点击DIV中的第一个a标签,然后隐藏li中的第一个div,弹出第二个div,span的值赋给了input
a[0].onclick = function () {
div[0].style.display = "none";
div[1].style.display = "block";
input.value = span.innerText;
}
// 第三步,保存,点击第二个a标签,然后把input的值赋给span标签,第一个div显示,第二个div隐藏
a[1].onclick = function () {
span.innerText = input.value;
div[0].style.display = "block";
div[1].style.display = "none";
}
// 第四步,取消。点击第三个a标签,然后显示第一个div,隐藏第二个div
a[2].onclick = function () {
div[0].style.display = "block";
div[1].style.display = "none";
}
}
</script>
</head>
<body>
<ul>
<li>
<div>
<span>我的名字是邓</span>
<a href="javascript:;">编辑</a>
</div>
<div>
<input type="text">
<a href="javascript:;">保存</a>
<a href="javascript:;">取消</a>
</div>
</li>
<li>
<div>
<span>我的名字是邓</span>
<a href="javascript:;">编辑</a>
</div>
<div>
<input type="text">
<a href="javascript:;">保存</a>
<a href="javascript:;">取消</a>
</div>
</li>
</ul>
</body>
</html>
用数组编辑多条,代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
li div:nth-child(2){
display:none;
}
</style>
<script>
window.onload = function () {
// 数组实现,先写好一组,然后定义一个相同的参数,然后用数组进行传参
var aLi = document.getElementsByTagName("li");
var fn = function (obj) {
var span = obj.getElementsByTagName("span")[0];
var input = obj.getElementsByTagName("input")[0];
var div = obj.getElementsByTagName("div");
var a = obj.getElementsByTagName("a");
a[0].onclick = function () {
div[0].style.display = "none";
div[1].style.display = "block";
input.value = span.innerText;
}
// 第三步,保存,点击第二个a标签,然后把input的值赋给span标签,第一个div显示,第二个div隐藏
a[1].onclick = function () {
span.innerText = input.value;
div[0].style.display = "block";
div[1].style.display = "none";
}
// 第四步,取消。点击第三个a标签,然后显示第一个div,隐藏第二个div
a[2].onclick = function () {
div[0].style.display = "block";
div[1].style.display = "none";
}
}
for(var i=0; i<aLi.length; i++){
fn(aLi[i]);
}
}
</script>
</head>
<body>
<ul>
<li>
<div>
<span>我的名字是邓</span>
<a href="javascript:;">编辑</a>
</div>
<div>
<input type="text">
<a href="javascript:;">保存</a>
<a href="javascript:;">取消</a>
</div>
</li>
<li>
<div>
<span>我的名字是邓</span>
<a href="javascript:;">编辑</a>
</div>
<div>
<input type="text">
<a href="javascript:;">保存</a>
<a href="javascript:;">取消</a>
</div>
</li>
</ul>
</body>
</html>
9、函数作用域
10、return
return后面的结果就是函数的返回值,如果没有手动return,默认都是返回undefined,,return后面的代码都不再执行
11、获取元素的样式
元素的样式在
console.log(getComputedStyle(box).width); getComputedStyle在ie9以上支持
console.log(box.currentStyle.width); currentStyle支持所有ie
元素样式封装:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
#box{
width: 100px;
height: 100px;
background: red;
position: absolute;
left: 10px;
top:50px;
}
</style>
<script>
window.onload = function () {
var btn = document.getElementById("btn");
var box = document.getElementById("box");
console.log(getStyle(box,"width"));
}
function getStyle(obj, attr) {
if(window.getComputedStyle){
//IE9以上支持
return getComputedStyle(obj)[attr];
} else {
// IE8及以下
return obj.currentStyle[attr];
}
}
</script>
<body>
<button id = "btn">按钮</button>
<div id="box"></div>
</body>
</html>