1、函數傳回值 ( return )
function show()
{
return 12;
};
alert(show()); //彈出12
(1)return就是函數傳回值,作用把東西傳回到函數外面來,在哪調用傳回到哪
(2)函數不僅可以傳回數字,傳回字元串,傳回算式(如return a+b;求出算式結果,然後把結果給傳回出去)
(3)函數參數,一次可以寫多個進去,但是return傳回值一次隻能傳回1個出去,當然有些折中的小辦法,如json可以讓函數同時傳回多個東西,後面講到再說
(4)函數可以沒有return,結果:undefined
(5)函數傳回值(函數可以把一些東西傳到外面來)和函數傳參(把一些東西傳到函數裡邊去)正好相反
(6)和變量一樣,一個函數最好隻傳回一種類型的值
2、arguments:可變參、不定參(即參數的個數是可變的,參數的個數是不定的)
function sum()
{
//alert(arguments.length);
//alert(arguments[0]);
//arguments
var result=0;
for(i=0;i<arguments.length;i++)
{
result+=arguments[i];
};
return result;
};
alert(sum(13,5,6,13,5,6,13,5,6,13,5,6)); //這個例子是求所有參數的和,即13,5,6,13,5,6,13,5,6,13,5,6這些數的和</span>
注:arguments其實是一個數組,數組裡面存的是傳給函數的參數
3、css函數,來自于jQuery,與jQuery裡邊的css差不多
css(oDiv,'width')擷取樣式(會把樣式的結果給傳回出去)
css(oDiv,'width','200px') 設定樣式
簡單來說,css函數給兩個參數是擷取,給三個參數是設定
例如:
<script>
function css()
{
if(arguments.length==2)
{
return arguments[0].style[arguments[1]];
};
else
{
return arguments[0].style[arguments[1]]=arguments[2];
};
};
window.οnlοad=function ()
{
var oDiv=document.getElementById('div1');
//alert(css(oDiv,'width')); //兩個參數,擷取樣式
css(oDiv,'background','green'); //三個參數,設定樣式
};
</script>
</head>
<body>
<div id="div1" style="width:200px; height:200px; background:red;">
</div>
</body>
上面例子的簡寫:
<script>
function css(obj,name,value)
{
//alert(obj==arguments[0]);
if(arguments.length==2)
{
return obj.style[name];
};
else
{
return obj.style[name]=value;
};
};
window.οnlοad=function ()
{
var oDiv=document.getElementById('div1');
alert(css(oDiv,'width'));
//css(oDiv,'background','green');
};
</script>
</head>
<body>
<div id="div1" style="width:200px; height:200px; background:red;">
</div>
</body>
4、擷取非行間樣式
<style>
#div1 {width:200px; height:200px; background:red;}
</style>
<script>
window.οnlοad=function ()
{
var oDiv=document.getElementById('div1');
//alert(oDiv.style.width); //style隻能用來擷取行間樣式
//IE(currentStyle用來擷取非行間樣式,隻相容IE和高版本的chrome)
//alert(oDiv.currentStyle.width);
//chrome、FF(getComputedStyle有兩個參數,第一個就是你要擷取哪個物體的樣式,第二個參數就是個垃圾,可以寫任意東西)
//alert(getComputedStyle(oDiv,false).width);
//alert(oDiv.currentStyle);
if(oDiv.currentStyle) //*****如何讓所有浏覽器都相容呢?實際上,JS裡99.99%的這種相容問題,都是通過if來解決的
{
//IE
alert(oDiv.currentStyle.width);
}
else
{
//chrome、FF
alert(getComputedStyle(oDiv,false).width);
}
};
</script>
</head>
<body>
<div id="div1">
</div>
</body>
把上面的if else封裝成一個函數,以後每次要用的時候,直接去調用就可以,即公用函數。得如下代碼:
<style>
#div1 {width:200px; height:200px; background:red;}
</style>
<script>
function getStyle(obj,name)
{
if (obj.currentStyle)
{
return obj.currentStyle[name];
}
else
{
return getComputedStyle(obj,false)[name];
}
};
window.οnlοad=function ()
{
var oDiv=document.getElementById('div1');
alert(getStyle(oDiv,'width'));
};
</script>
</head>
<body>
<div id="div1">
</div>
</body>
css裡有兩種樣式:
(1) 複合樣式:background、border
(2) 單一樣式:width、height、position
上面的例子如果想取背景顔色,直接這樣寫alert(getStyle(oDiv,'background'));是取不到的,
因為currenStyle沒法取複合樣式,隻能取單一樣式,如果就想取背景顔色,那就要寫成backgroundcolor,如下面
alert(getStyle(oDiv,'backgroundColor'));