JavaScript 編程基礎(二)

JavaScript 編程基礎

一、函數

JavaScript 中提供了函數,函數可以將程序中繁瑣的代碼模塊化,提高程序的可讀性,並且便於後期的維護。

(1)函數的定義

爲了使代碼更爲簡潔並可以重複使用,通常將某段實現特定功能對的代碼定義成一個函數。所謂函數,就是在程序中多條語句組成的邏輯單元。
在 JavaScript 中,函數使用關鍵字 function 來定義,其語法格式如下:

<script type="text/javascript">
	function 函數名 ([參數1,參數2,......]){
		函數體
	}
</script>
  • function:在聲明函數時,必須使用的關鍵男子。
  • 函數名:創建函數的名稱,函數名唯一。
  • 參數: 外界傳遞給函數的值,可選,當有多個參數時,各參數之間用“,”隔開。
  • 函數體:函數定義的主體,用於實現特定的功能。

(2)函數的調用

函數定義後不會自動執行,而是需要在特定的位置調用函數。函數調用很簡單,只許引入函數名,並傳入相應的參數即可。語法格式如下:

	函數名稱 ([參數1,參數2,......])

例:下面定義一個帶有參數的函數 show(text) ,在頁面中輸出“Hello World”.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>調用函數</title>
		<script type="text/javascript">
			//定義一個含有形參text的函數
			function show(text){
				document.write(text);	
			}
		</script>
	</head>
	<body>
		<script type="text/javascript">
			//調用函數show(),給出實參“Hello World”
			show("Hello World");
		</script>
	</body>
</html>

首先 執行函數 show() 的函數體,然後,JavaScript 在其執行函數體之前會把實參值“Hello World”傳遞給形參 text。

(3)函數中變量的作用域

函數中的變量需要先定義後使用,但並不意味着定義變量後就可以隨意使用。變量需要在它的作用範圍內纔可以被使用,這個作用範圍稱爲變量的作用域。
變量的作用域取決於這個變量是哪一種變量,在 JavaScript 中,變量一般分爲全局變量和局部變量。

  • 全局變量: 定義在所有函數之外,作用於整個程序的變量。
  • 局部變量: 定義在函數體之內,作用於函數體的變量。

二、Array 數組

與其他計算機語言一樣,JavaScript 也是通過數組來保存具有相同類型的數據。

(1)創建數組

在 JavaScript 中,使用內置對象類 Array 可以創建數組對象,其語法格式如下:

var arrayname= new Array();		//新建一個長度爲0的數組
var arrayname=new Array(n);		//新建一個指定長度爲n的數組

//新建一個指定長度的數組,並賦值
var arrayname= new Array(元素1,元素2,元素3,......);	

var arraryname=[元素1,元素2,元素3,......];	

一個數組元素由數組名、一對方括號**[ ]** 和括號中的下標組合而成,不同的數組元素可以通過下標進行區別。
例如,創建一個長度爲 Y 的數組對象 year ,對於這個 year 數組對象,它包含數組元素year[0]、year[1]、year[2]、…、year[Y-1]。

(2)使用 for…in 語句

JavaScript 的 for…in 語句是一種特殊的 for 語句,專門用於處理與數組和對象相關的循環操作。for…,in 語句可以依次對數組中的每個元素執行一條或多條語句。其語法格式如下:

		for (變量 in 對象){
			//此處爲JavaScript代碼
		}

(3)數組的常用屬性和方法

屬性/方法 說明
length 返回數組中數組元素的個數,即數組長度
toString 返回一個字符串,該字符串包含數組中所有元素,各個元素之間用逗號隔開

數組的 length屬性是數組最常用的屬性,另外,由於數組索引值是從0開始的,因此 length 屬性值比數組中的最大索引值大 1。

(4)二維數組

對於複雜的業務邏輯,有時簡單的一維數組不能夠滿足需求,需要使用二維數組。當數組中所有的元素也是數組時,就形成了二維數組。
例如,要保存一個班級所有人的姓名、年齡、性別等數據。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>二維數組</title>
	</head>
	<body>
		<script typr="text/javascript">
			var students,i,j;
			students = new Array();
			studetns[0]=new Array("張三","18歲","男");
			students[1]=new Array("李四","17歲","男");
			students[2]=new Array("王五","18歲","女");
			for(i in students[i]){
				for(j in students[i]){
					document.write(students[i][j]+"\t");
				}
				document,write.("<br />");
			}
	</body>
</html>

三、DOM 節點樹

DOM(Document Object Model)稱爲文檔對象模型,是一個表示和處理文檔的應用程序接口(API),可用於動態訪問、更新文檔的內容、結構和樣式。DOM將網頁中文檔對象的關係規劃爲節點層級,構成他們之間的等級關係,這種各對象間的層次結構被稱爲節點樹。

DOM 節點樹

html
head
title
titke文本
body
h1
h1文本
ul
li
li文本
li
li文本

如上圖展示了DOM文檔的樹形結構,其中“html、head、body”都表示節點,一個文檔的樹形結構就是由各種不同的節點組成的。文檔對象節點樹有以下特點。

  • 每個節點樹有一個根節點。
  • 除了根節點,每個節點都有一個父節點。
  • 每個節點都可以有許多子節點。
  • 具有相同父節點的節點叫“兄弟節點”。

四、節點的訪問

在 DOM 中,每個節點都是一個對象,因此每個節點對象都有一系列的屬性、方法。JavaScript 中可使用節點的屬性和方法訪問指定元素,來得到文檔中的對象。

(1)訪問指定元素

訪問指定節點的常用方法。

方法 說明
getElementById() 獲取擁有指定id的第一個元素引用對象
getElementByName() 獲取帶有指定名稱的元素對象集合
getElementByTagName() 獲取帶有指定標籤名的元素對象集合
getElementByClassName() 獲取指定class的元素對象集合(不支持IE6~8瀏覽器)

(2)訪問相關元素

節點對象的常用屬性

屬性 說明
parentNode 元素節點的父節點
childNode 元素節點的子節點數組
firstChild 第一個子節點
lastChild 最後一個子節點
previousSibling 前一個兄弟節點
nextSibling 下一個兄弟節點

*需要注意的是,document 對象是所有 DOM 對象的的訪問入口,進行節點訪問的時候需要首先從 document 對象開始。

五、元素對象常用操作

類型 方法 說明
創建節點 createElement() 創建元素節點
createTextNode 創建文本節點
節點操作 appendChild() 爲當前節點增加一個子節點(作爲最後一個節點)
insertBedore() 爲當前節點增加一個子節點(插入到指定子節點之前)
removeChild() 刪除當前節點的某個子節點

使用Demo

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>節點的創建和追加操作</title>
	</head>
	<script type="text/javascript">
		function init(){
			//創建一個<h1>節點
			var h1 = document.createElement("h1");	
			//創建一個文本節點
			var text = document.createTextNode("Hello World!");
			//爲<h1>追加文本節點
			h1.appendChild(text);
			//爲<body>追加<h1>元素
			document.body.appendChild(h1);
		}
	</script>
	<body onload="init()">
	</body>
</html>

運行Demo結果
Demo運行結果

六、元素屬性與操作

元素對象除了節點操作,還具有一些屬性和內容的操作。

類型 屬性/方法 說明
元素內容 inneHTML 獲取或設置元素的HTML內容
樣式屬性 classnName 獲取或設置元素的class屬性
style 獲取或設置元素的style樣式屬性
位置屬性 offsetWidth、offsetHeight 獲取或設置元素的寬和高(不含滾動條)
scrollEidth、scrollHeight 獲取或設置元素的完整的寬和高(含滾動條)
offsetTop、offsetLeft 獲取或設置包含滾動條,距離上或左邊滾動過的距離
scrollTop、scrollLeft 獲取或設置元素在網頁中的座標
屬性操作 getAttribute() 獲得元素指定屬性值
getAttribute() 爲元素設置新到的屬性
removeAttribute() 爲元素刪除指定的屬性

七、元素的樣式操作

在操作元素屬性時,style 屬性可以修改元素的樣式,className 屬性可以修改元素的雷鳴,通過這兩種方法即可完成元素的樣式操作。

(1)style 屬性

var test = document,getElementById("test");	//獲得需要操作的對象
test.style.width="200px";	//設置樣式,相當於: #test{width:200px;}
test.style.height="100px";	//相當於:#test{height:100px;}
test.style.backgroundColor = "#ff0000":	//相當於: #test{background-color:#ff0000;}
var testWidth=test.style.width;	//獲得width樣式

在CSS屬性中帶有“-”的樣式(如background-color),在style 操作中需要用“駝峯式”(如backgroundColor),即在第二個及後續單詞的首字母大寫。

(2)className 屬性

元素對象的className 屬性用於切換元素的類名或爲元素追加類名。

var test = document.getElementById("test");	//獲得元素對象<div id="test">
test.className = "aa";	//添加樣式,執行:<div id="tesst" class="aa">
test.className +="bb"'	//追加樣式,執行: <div id="test" class="aa bb">
test.className = test.className.replace("bb","cc");
//替換樣式,執行:<div id="test" class="aa cc">
tes.className = test.className.replace("cc","");
//刪除cc,執行:<div id="test" class="aa">
test.className="";		//刪除所有的樣式
Authors
杜小白

文章內容借鑑於《HTML+CSS+JavaScript 網頁製作案例教程》 編著:傳智播客

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章