天天看點

三、深入Javascript(1)_看智能社blue老師JS視訊整理的筆記

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'));