整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          帶你走進JavaScript世界系列-事件處理程序之HTML事件處理

          面我們已經介紹了事件的概念,而響應某個事件的函數就叫做事件處理程序。事件處理程序的名字以 "on" 開頭,因此 click 事件的處理程序就是 onclick ,load 事件的處理程序就是 onload。

          HTML 事件處理程序

          某個元素支持的每種事件,都可以使用一個相應事件處理程序同名的 HTML 特性來指定。這個特性的值應該是能夠執行的 JavaScript 代碼。例如,要在按鈕被單擊時執行一些操作,可以像下面代碼一樣:

          <input type="button" value="點擊我" onclick="alert('我被點擊了。。')" /> 
          

          注意,上面這種寫法不能在其中使用未經轉義的 HTML 語法字符,如果要使用 HTML 語法字符,就需要使用轉義字符了。

          在 HTML 中定義的事件處理程序可以包含要執行的具體動作,也可以調用在頁面其他地方定義的腳本,例:

          HTML 事件處理程序--調用頁面腳本

          上面代碼指定事件處理程序具有一些獨到之處。首先,會創建一個封裝著元素屬性值的函數。這個函數中有一個局部變量 event,通過這個 event 變量,可以直接訪問事件對象,你不用自己定義它,也不用從函數的參數列表中讀取。在這個函數內部,this 值等于事件的目標元素。

          不過,在 HTML 中指定事件處理程序有兩個缺點。首先,存在一個時差問題,用戶可能在 HTML 元素一出現在頁面上就觸發了相應的事件,但當時的事件處理程序有可能尚不具備執行條件。前面的例子中,假如 showMessage() 函數是在按鈕下方、頁面的最底部定義的。如果用戶在頁面解析 showMessage() 函數之前就單擊了按鈕,就會出現錯誤。因此,很多 HTML 事件處理程序都會被封裝在一個 try-catch 塊中。其次,這樣擴展事件處理程序的作用域鏈在不同瀏覽器中會導致不同結果。不同 JavaScript 引擎遵循的標識符解析規則存在差異,很可能會在訪問非限定對象成員時出錯。

          <script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>

          一、主要學習你內容:

          1、常量與變量

          2、數據類型

          3、運算符

          4、表達式與語句

          5、類型轉換

          6、轉義字符

          7、注釋

          二、常量與變量

          2.1變量

          變量指的是一個可以改變的量。

          命名規則:

          1、變量由字母、下劃線、$或數字組成,并且第一個字母必須是“字母、下劃線或$”

          2、變量不能是系統關鍵字和保留字。

          3、變量名一定要區分大小寫

          變量的使用

          1、變量聲明

          2、變量賦值

          語法:

          var 變量名=值;   //所有JavaScript的變量都是由var聲明。
          var 變量1=值,變量2=值,變量3=值   //可以聲明多個變量名,變量名直接用英文 (,)隔開

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          			var a=10;	
          			document.write(a);
          		</script>
          	</head>
          	<body>		
          		
          	</body>
          </html>

          2.2常量

          常量指不能改變的量,一般定義常量的時候,常量名全部大寫,這樣一看就知道是常量了。

          如:

          var ABC=1

          三、數據類型

          3.1基本數據類型:

          (1)數字: 1 、 -1、2.54等

          (2)字符串: "字符內容"

          注:可以是單引號,也可以是雙引號,或者單引號嵌套雙引號,或雙引號嵌套單引號,但不能同時出現單引號嵌套單引號,雙引號嵌套雙引號,因為JS判斷不處理哪兩個是一對的。如果數字加上了的單引號,那么也變成了字符串

          (3)布爾值:true 和false

          用在選擇結構上居多。

          (4)未定義值

          如果一個變量雖然用var聲明了,但是滅有賦值,此時改變量就是“未定義值”用undefined表示

          (5)空值null

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          			var a=30,b=20;
          			if(a<b)
          			{
          				document.write('a小于b');
          			}
          			else
          			{
          				document.write('a大于b')
          			}
          			var d;
          			document.write(d);
          				
          		</script>
          	</head>
          	<body>		
          		
          	</body>
          </html>

          四、運算符

          + 加 -減 *乘 /除 %求余 ++自增 --自減

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          			var a=3,b=5;
          			var c=a*b;
          			document.write(c);
          		</script>
          	</head>
          	<body>		
          		
          	</body>
          </html>

          五、賦值運算符

          =等于 += 加等于 -=等于 *= /等于

          舉例:var a+=b 等價于 var a=a+b;

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          			var a=3,b=5;
          			 a+=b;
          			document.write(a);
          		</script>
          	</head>
          	<body>		
          		
          	</body>
          </html>

          六、比較運算符

          用于將運算符兩邊的值或者表達式進行比較,如果結果是對的,返回的是true,如果結果是錯的,返回的是false。

          > 大于 < 小于 >=大于等于 <=小于等于 ==等于 !=不等于

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          			var a=3,b=4;
          			if(a==b)
          			{
          				document.write('a和b的值相等');
          			}
          			else
          			
          				document.write('a和b的值不等');
          		</script>
          	</head>
          	<body>		
          		
          	</body>
          </html>

          七、邏輯運算符

          && "與"運算 || "或"運算 !"非"運算

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          			var a=3,b=4,c=4;
          			if(a>b||b<c)
          			{
          				document.write('結果為真');
          			}
          			else
          			
          				document.write('結果為假');
          		</script>
          	</head>
          	<body>		
          		
          	</body>
          </html>

          七、條件運算符也叫三目運算符

          語法:

          var  a=條件? 表達式1:表達式2;

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          		     var result=(2>3)?"表達式1執行":"表達式2執行";
          		     document.write(result);
          		</script>
          	</head>
          	<body>		
          		
          	</body>
          </html>

          說明:

          當條件為true時,我們選擇的是表達式1,當條件為false時,我們選擇的是表達式2.

          八、表達式和語句

          舉例: var a=3+4;

          說明:3和4是操作數,而+是操作符,3+4是表達式,整體的var a=3+4;這個叫語句

          我們只需要記住,一個分號一個語句,而表達式就是一句話的一部分。

          九、類型轉換

          指的是一種數據類型,轉換成另外一種數據類型。

          轉換類型有兩種:

          1、隱式類型轉換:JS自動進行類型轉換

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          		   var a="100";
          		   var b=100;
          		   var result=a+b;
          		   document.write(result);
          		</script>
          	</head>
          	<body>				
          	</body>
          </html>

          結果:是100100而不是200,這種一個數字和一個字符串相加,JS會自動將數字轉換成字符串然后在相加,所以得到的是100100,這種自動進行類型轉換的叫做隱式類型轉換,

          2、顯示類型轉換:手動用代碼強制進行類型轉換。

          9.1字符串轉換為數字

          1)Number() 提取字符串中純數字用

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          		 document.write("Number('222'):"+Number("222")+"<br/>");
          		 document.write("Number('222.123'):"+Number("222.123")+"<br/>");
          		 document.write("Number('fff222'):"+Number("fff222")+"<br/>");
          		 document.write("Number('222fff'):"+Number("222ff")+"<br/>");		 
          		</script>
          	</head>
          	<body>				
          	</body>
          </html>

          結果:


          說明,Number只能轉換純數字的,帶字母的,顯示NAN,是Not a Number非數字意思。

          2)parselnt()提取首字母為數字的整數部分

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          		 document.write("parseInt('222'):"+parseInt("222")+"<br/>");
          		 document.write("parseInt('222.123'):"+parseInt("222.123")+"<br/>");
          		 document.write("parseInt('fff222'):"+parseInt("fff222")+"<br/>");
          		 document.write("parseInt('222fff'):"+parseInt("222ff")+"<br/>");		 
          		</script>
          	</head>
          	<body>				
          	</body>
          </html>

          結果:



          說明:parselnt()是從左到右判斷,如果第一個字符是數字,則繼續判斷,直到出現非數字為止,而第一個字符是非數字,則直接返回Nan

          3)parseFloat()提取首字母為數字的整數和小數部分

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          		 document.write("parseFloat('222'):"+parseFloat("222")+"<br/>");
          		 document.write("parseFloat('222.123'):"+parseFloat("222.123")+"<br/>");
          		 document.write("parseFloat('fff222.111'):"+parseFloat("fff222.111")+"<br/>");
          		 document.write("parseFloat('-222.111fff'):"+parseFloat("-222.111ff")+"<br/>");		 
          		</script>
          	</head>
          	<body>				
          	</body>
          </html>

          結果:


          說明:同parseint,只不過這個帶小數為

          9.2數字轉換為字符串

          1)與空字符串相加

          2)toString()

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          	var a=100+"";
          	var b=100;
          	var result=a+b;
          	var result1=a.toString()+100;
          	document.write(result+"<br/>");
          	document.write(result1);
          		</script>
          	</head>
          	<body>				
          	</body>
          </html>

          結果;


          說明:實際應用中很少,更多使用隱式型轉換的方式

          十、轉義字符

          在頁面中我們想顯示特殊的字符,比方說雙引號。那么就要用到轉義字符。

          常見的轉義字符

          \' 英文單引號

          \'' 英文雙引號

          \n 換行符

          換行符使用的兩種情況。

          1.如果是在document.write()中換行,則應該用:<br/>

          2.如果是在alert()中換行,則應該用:\n

          舉例:

          <!DOCTYPE html>
          <html>
          	<head>
          		<meta charset="utf-8" />
          		<title></title>
          		<script>
          	document.write("細節<br/>\"決定\"<br/>成敗");
          	alert("細節\n\"決定\"\n成敗")
          		</script>
          	</head>
          	<body>				
          	</body>
          </html>

          十一、注釋

          1.單行注釋

          語法:

          //單行注釋

          2.多行注釋

          當注釋的內容比較多,用一行表達不出來時,我們可以使用多行注釋的方式。

          語法:

          /* 多行注釋 */

          .1.字符串

          C語言的字符串是一種組合類型,它的結構類似列表,C語言規定字符串要由數值0結束。常見的字符串由char構成,也有unsigned char與其它類型構成的字符串。

          通過之前的學習我們知道,字符串常量以英文符號雙引號“"”作為開始結束標志。那么就會存在一個問題,如果字符串的長度太長怎么辦?C語言規定反斜杠“\”作為代碼的續行符,在每行代碼的末尾,代表下面的一行代碼緊接在本行之后,相當于是同一行。

          除此之外,還可以用雙引號來處理續行,可以對比一下差別。

          后者的排版效果明顯要優于前者。

          第三個例子中,下面左邊的那段空白字符也會被當作字符串的一部分,這樣寫是不對的。

          這兩種方式都支持多行代碼的續行。

          4.2.編碼風格

          既然提到了代碼的排版編輯,那就順便討論一下編碼風格。

          一些比較嚴謹的團隊會專門制作編碼風格約定,保證所有成員產出風格一致的代碼。

          我們的示例代碼都做了縮進處理,這樣做的好處是突出代碼的層次感,比較容易看出邏輯關系。一般語句塊要做縮進處理,下一層的代碼向右縮進4個空格的位置,縮進位置可以在編輯工具里設置。

          除此之外,標識符的命名規范是編碼風格的重點。命名的原則之一是顧名思義,名字不能太短。但也有例外,C語言有個不成文規定,整型的循環變量一般命名為i、j、k等。一般如果變量只是作用于小范圍之內,不一定要嚴格遵守,但是如果變量跨越成百上千行還需要引用,再采用i、j、k這樣的變量名就不合適了。

          之前還沒提到注釋這方面,這里就順便介紹一個有關代碼的注釋。C語言的代碼注釋有兩種格式,一種是多行注釋(注釋塊,以符號“/*”開始,符號“*/”結束),一種是單行注釋(在一行代碼之后以兩個正斜杠“//”開始注釋)。

          注釋的主要作用是幫助理解代碼的可讀性,讓代碼閱讀者更容易理解作者編寫代碼的思路和意圖。

          C語言的語句塊有兩種風格。

          一般來說,程序員比較認可第二種風格,也更普遍一些。第一種風格主要是排版更加緊湊一點,在文章里面展示更合適一些。

          4.3.字符型

          單字節字符串里面,以ASCII字符最為常用。我們知道char類型可表示-128~127區間的整數,其中ASCII字符以0~127區間為主,里面包括52個大小寫英文字母、10個阿拉伯數字和各種標點符號,此外還有若干不可見字符。

          反斜杠“\”可以作為轉義字符,用來表示不可見字符和其它字符。不可見字符里面比較常用的有空白符、制表符'\t'、回車符'\r'與換行符'\n',由于反斜杠的作用,所以用兩個反斜杠'\'表示反斜杠本身。其中回車符是指光標回到本行的行首,換行是指光標移到下一行,但橫向位置不變。但是現在一般沒分這么仔細,一般地微軟公司軟件常用回車符加換行符來另起一個新行,其它系統就只用一個換行符起新行。

          之前的printf輸出字符串,多數都帶有換行符,這樣在輸出一行之后,光標就移動到下一行。有時需要在同一行連續輸出字符,就不能加換行符。scanf輸入格式盡量不要用這些字符。

          ASCII字符有很多應用,比如現在常見的html與json,熟悉這些字符可以提高工作效率。

          4.4.格式串

          前面示例代碼中的主要是printf/scanf的格式串,格式串的用法很多樣,不容易一下子掌握,要靠日常積累。

          目前常用的有字符'%c'、整數'%d'、浮點數'%f'與雙精度'%lf',還有字符串'%s'。如果要輸出百分號'%'怎么辦?對了,是兩個百分號'%%'。

          輸出格式串還可以指定寬度,比如'%2d',如果整數超過2位數字,就按照原本的長度完整顯示出來。浮點數可以指定有效數字與小數位數,比如'%8.2f'。

          輸出格式串還可以指定填充字符,比如'%02d',前面用阿拉伯數字0來填充,還可以用'%.6d'格式。

          編譯代碼,運行程序。

          輸入格式串還可以跳過一個數值,比如'%*d',在輸入時候遇到一個整數,舍去它的值,如果預期的整數沒出現,函數返回相應的信息。

          4.5.返回值

          一般的教程中,很少會提到printf/scanf的返回值,但其實它們的返回值非常重要。其中,printf的返回值會告訴我們輸出了多少個字符,而scanf的返回值會告訴我們總共讀取到多少個變量值。

          在“cex006.c”文件中輸入以下代碼并保存。

          在這個程序中,我們先把重置3個變量,以便觀察之后的輸入是否生效。輸入變量之后將顯示scanf的返回值,接著輸出變量的值。注意對比第9、11行代碼,由于后者忽略了中間一個字符,因此參數里面就少了ch變量。

          編譯代碼,運行程序。

          第一段輸入,顯示讀取到3個變量,得到的數值也跟初始值不同,說明輸入時正常的。第二段的輸入由于限定了'%*c'格式,因此中間那個字符被忽略了,最后得到2個變量。

          再次運行程序,這次輸入不合理的數值,檢查運行結果有什么不一樣。

          這次輸入的數值,在后面的部分出現不是數字的字符,由于限定了'%d'格式,因此只讀到中間的字符部分。之后的輸出也可以看出來,變量inum2數值沒有還是之前重置的0。

          對于上一節的四則運算小程序,我們用新掌握到的方法進一步完善一下。

          在“cex007.c”文件中輸入以下代碼并保存。

          在第8行,對scanf的返回值做出判斷,如果不足3個,程序提前退出。后面部分不做調整,下面列出完整的代碼。

          完善之后的程序能夠檢測輸入的數值是否正常,對于不正常的數值不再繼續往下運行,從而避免得出錯誤的結果。日常我們寫程序也要養成這樣的習慣,要對一些可能出錯的情況做出預判,避免一些不必要的BUG。

          本節的內容一些教程中都沒有提供,這些知識點在實踐中很有用。初學者在掌握C語言基本語法之后,要留意積累常用的知識點。后文也會根據進度需要適當提供一些編程技巧與實踐經驗,相信能達到很好的效果。


          主站蜘蛛池模板: 亚洲乱色熟女一区二区三区丝袜 | 国产一区二区三区在线2021| 日本免费电影一区| 无码精品视频一区二区三区| 国精产品一区一区三区MBA下载| 激情一区二区三区| 亚洲午夜精品第一区二区8050| 麻豆AV一区二区三区| 精品一区二区三区波多野结衣| 亚洲av高清在线观看一区二区| 精品无码国产AV一区二区三区| 日本一区二区视频| 欧美av色香蕉一区二区蜜桃小说| 亚洲一区二区三区高清| 韩国一区二区视频| 色国产在线视频一区| 高清一区二区在线观看| 免费观看日本污污ww网站一区 | 91视频一区二区| 亚洲一区二区三区深夜天堂| 亚洲变态另类一区二区三区 | 日产一区日产2区| 乱人伦一区二区三区| 精品无码中出一区二区| 福利一区二区三区视频在线观看 | 国产成人精品一区二区三在线观看 | 亚洲国产成人一区二区精品区| 日本国产一区二区三区在线观看| 日韩一区在线视频| 精品一区二区三区免费毛片爱| 精品无人乱码一区二区三区 | 亚洲国产高清在线一区二区三区| 亚洲AV成人一区二区三区在线看| 国产一区二区免费| 美女视频一区二区| 亚洲一区中文字幕在线观看| 久久综合九九亚洲一区| 亚洲视频一区在线播放| 亚洲国产精品一区| 91福利国产在线观一区二区| 色窝窝无码一区二区三区色欲|