天天看點

javaWeb核心技術第三篇之JavaScript第一篇

- 概述
  - JavaScript一種直譯式腳本語言,是一種動态類型、弱類型、基于原型的語言
  - 作用:給頁面添加動态效果,校驗使用者資訊等.
- 入門案例
  - js和html的整合
    - 方式1:内聯式
      "通過<script></script>标簽實作,在标簽體中編寫js代碼即可"
    - 方式2:外聯式
      "編寫外部的js檔案,通過srcipt标簽的src屬性引入即可"
    - 注意事項:
      "     script标簽可以放在頁面的任何位置,一般放在head中
            一個頁面可以有多個srcipt标簽
            script标簽一旦使用了src屬性,它的标簽體就會失效"
- 組成部分
  - ECMAScript:核心文法
    - 變量聲明
      - 格式:  var 變量名稱 = 初始化指派;
      - 注意事項:
        - var可以省略,但是不建議省略
        - 末尾的分号也可以省略,但是不建議
    - 資料類型
      - 原始類型(5種)
        - Undefined:undefined
        - Null:null
        - Number:一切數字
        - String:一切被引号引起來的字元串
        - Boolean: true 或 false
        - 運算符typeof
          "用來判斷給定值的資料的所屬類型  例如: typeof age;"
      - 引用類型:javaScript第二天内容
    - 運算符
      - 等性運算符
        - ==   !=
          "判斷數值"
        - ===    !==
          "判斷數值和類型"
      - 關系運算符
        - >  <  >=  <=
      - 邏輯運算符
        - &&  ||   !
        - 非空對象 非0數字 非空字元串 都為true 其他為false
    - 語句
      "幾乎和java一樣"
      - if  ...   else  ...
      - for(){}方式
    - 函數
      "用來完成指定操作的代碼片段,在java中叫方法,在js中叫函數"
      - 方式1: 普通函數
        " function 函數名稱(參數清單){
        	 ... 
        }"
      - 方式2(匿名函數): 
        "var 函數名稱 = function(參數清單){
        	...
        }"
      - 函數傳回值:在函數中直接使用return傳回結果即可
      - 注意事項:參數清單中的參數可以不寫類型
    - 事件
      "具體的某件事情"
      - 單擊事件: onclick
        "單擊滑鼠時觸發"
      - 表單送出事件: onsubmit
        "送出form表單時觸發"
      - 頁面加載成功事件: onload
        "當頁面加載完畢後觸發"
    - 事件和事件源的綁定
      - 方式1:綁定事件
        " 實作方式:通過标簽的事件屬性 
         例如:<xxx onclick="函數名(參數清單)"></xxx>"
      - 方式2:派發事件
        "	實作方式:擷取标簽對象(元素)
                	對象.事件名稱=function(){}"
      - 使用步驟:
        - 1.确定事件
        - 2.編寫函數
          - 擷取元素
          - 處理元素
  - BOM(浏覽器對象模型):操作浏覽器
    - window 視窗
      - 常用屬性
        "通過它擷取其他的四個對象
        eg:window.history  == history
        注意:使用window的對象或屬性時,window可以省略不寫"
      - 常用方法
        - 定時器
          - var 定時器id = setInterval()  設定周期執行定時器
            - 格式1:setInterval(函數名稱,毫秒值);
              "周期執行,每隔多少毫秒執行一次指定函數"
              - 注意:每個定時器都會傳回一個定時器id,定時器id主要用在清除定時器時.
            - 格式2:setInterval("函數名稱(參數清單)",毫秒值);
              - "周期執行,每隔多少毫秒執行一次指定函數 可傳遞參數"
          - clearInterval() 清除周期執行定時器
            - 使用方式:clearInterval(定時器id)
              "作用:将正在使用的定時器清除"
          - setTimeout()  單次執行定時器
            - 格式1:setTimeout(函數名稱,毫秒值);
              "單次執行,多少毫秒後執行指定函數,隻執行一次"
            - 格式2:setTimeout("函數名稱(參數清單)",毫秒值);
              "單次執行,多少毫秒後執行指定函數,隻執行一次  可傳遞參數"
            - 注意:每個定時器都會傳回一個定時器id,定時器id主要用在清除定時器時.
          - clearTimeout()
            - 使用方式:clearTimeout(定時器id)
        - 警告框
          - alert();
        - 對話框
          - prompt();
            "可以傳入兩個參數,第一個為提示資訊,第二個為預設值"
        - 确認框
          - confirm();
            "可以傳入一個參數,為确認資訊"
        - 擴充
          - 打開  open(url);
          - 關閉  colse();
    - history 曆史
      - 常用方法
        - forward();  下一個頁面
        - back();   傳回上一個頁面
        - go(Number);   ★
          - go(number);   向後跳轉幾個頁面
          - go(-number);   向前跳轉幾個頁面
    - location 連接配接  ★★
      - 常用屬性
        - href
          - kk;   得到目前頁面的路徑
          - kk=url;  跳向指定的頁面
    - navigator 了解
    - screen 了解
  - DOM(文檔對象模型):操作文檔 (明天内容)
    - 擷取一個元素(标簽)對象
      - var obj = document.getElementById("id值");
        "通過id擷取一個标簽對象"
      - 擷取對象中的value值
        "通過對象的value屬性    對象.value;"

回顧:
	javaScript:直譯式的腳本語言,直接嵌入html使用即可
	js和html整合:
		方式1:内聯式
			通過script标簽實作,直接在标簽體中編寫js代碼即可
		方式2:外聯式(首先要編寫外部的js檔案,字尾名以*.js結尾)
			通過script标簽的src屬性實作
	js組成部分:
		ECMAScript:核心文法
			變量聲明
				var 變量名稱 = 初始化值;
			資料類型
				原始類型:(5種)
					Undefined: undefined   var age;
					Number:
					String:
					Null: null
					Boolean:
					
					typeof 對象;
				引用類型:
			運算符
				等性運算符:
					== !=
					=== !==
				關系運算符:
					> < >= <=
				邏輯運算符:
					&& || !
					
					"abc" || false
					"abc" || "123"
					
					"abc" && "123"
					"abc" && false
			語句
				if("123"){}
				for(){}
			函數
				方式1:普通函數
					function 函數名(){}
				方式2:匿名函數
					var 函數名 = function (參數,參數){}
				調用函數:
					函數名(參數,參數);
				傳回值:
					return 傳回值;
			事件
				onclick:單擊事件
				onsubmit:表單送出事件
				onload:頁面加載成功事件
				
			事件和事件源綁定
				方式1:綁定事件
					通過标簽的事件屬性
					<xxx onclick = "func()"></xxx>
				方式2:派發事件
					a.擷取事件源(擷取标簽對象)
						var 對象 = document.getElementById("id");
					b.給事件源派發事件
						對象.事件名稱 = function(){
							....
						}
		BOM:操作浏覽器
			window:視窗
				屬性:
					通過window擷取其他的四個對象即可.使用window的屬性或方法的時候window可以省略不寫
				方法:
					定時器:
						周期執行:
							var interId = setInterval();
								setInterval("函數名稱()",毫秒值);
								setInterval(函數名稱,毫秒值);
							clearInterval(id);
						單次執行:	
							var timeId = setTimeout();
								
							clearTimeout(id);
					警告框:
					對話框:
					确認框:
					打開和關閉:
			history:曆史
				方法:
					forward();
					back();
					go(number);
			location:連接配接 ★★
				屬性:
					href
						kk;
						kk = url;
		DOM:操作文檔
			var 對象 = document.getElementById("id");
			對象.屬性名稱; 擷取
			對象.屬性名稱 = 值; 設定
/////////////////////////////////
案例1-完善表單校驗
	需求分析:
		當表單送出的時候,校驗表單中的使用者名和密碼是否符合格式,如果不符合,則在相應的輸入框後面填寫提示資訊且不允許表單送出,
		反之可以送出
	技術分析:
		事件
		正規表達式:
		DOM對象:
///////////////////////////
	DOM:
		操作value屬性
			擷取value屬性的值:
				擷取一個标簽對象:
					var 标簽對象 = document.getElementById();
				擷取value屬性的值:
					标簽對象.value;
			設定value屬性的值:
				擷取一個标簽對象:
					var 标簽對象 = document.getElementById();
				設定value屬性的值
					标簽對象.value = 值;
		操作标簽體:
			擷取标簽體内容:
				擷取一個标簽對象:
					var 标簽對象 = document.getElementById();
				擷取标簽體的内容:
					标簽對象.innerHTML;
			設定标簽體内容:
				擷取一個标簽對象:
					var 标簽對象 = document.getElementById();
				設定标簽體的内容:
					标簽對象.innerHTML = "<xxx>值</xxx>";
	正規表達式:
		1.編寫正規表達式
			使用者名:var zz = /^[a-z0-9_-]{3,16}$/;
			密碼:var zz = /^[a-z0-9_-]{6,18}$/;
			校驗為空: /^\s*$/
		2.校驗
			var str = "123";
			zz.test(str);		Boolean
///////////////////////
	步驟分析:
		1.确定事件(表單送出事件)
			<form onsubmit="retrun checkForm()"></form>
			<form id="formId"></form>
		2.編寫checkForm函數
			function checkForm(){
				//0/設定全局開關
				var flag = true;
				//a.擷取使用者名和密碼輸入框對象
					var 對象 = document.getElementById("id");
				//b.擷取使用者名和密碼的值
					var val = 對象.value;
				//c.編寫正規表達式
					
				//d.校驗
					if(zz.test(val)){
						//校驗不通過
						給對應的span标簽中填寫提示資訊
						flag = false;
					}else{
						//校驗通過
						給對應的span标簽中填寫提示資訊
					}
				//e.傳回值
				return flag;
					
			}
		
案例2-表格各行換色
	需求分析:
		當頁面加載成功後,給表格的奇數行和偶數行添加不同的背景顔色
	技術分析:
		事件
		DOM:
	//////////////////////
		步驟分析:
			1.确定事件(頁面加載成功事件)
				onload = function(){
					
				}
			2.編寫匿名函數
				a.擷取目前頁面所有行對象
					var trObjArr = document.getElementsByTagName("tr");
				b.周遊數組對象,給計數行和偶數行添加不同的背景顔色
					for(var i=0;i<trObjArr.length;i++){
						if(i%2==0){
							trObjArr[i].style.backgroundColor = "顔色";
						}else{
							trObjArr[i].style.backgroundColor = "顔色";
						}
					}
		
案例3-複選框全選和全不選
	需求分析:
		當點選頭部的複選框的時候,要使其他複選框的狀态和頭部的保持一緻.
	技術分析:
		單擊事件
		DOM
		操作元素的checked屬性
	/////////////////////////////
	步驟分析:
		1.确定事件(單擊事件)
			給頭部的複選框添加單擊事件
		2.編寫函數
			a.擷取頭部複選框狀态
				對象.checked;
			b.擷取其他的複選框對象
			c.周遊其他的複選框對象數組,分别給每一個複選框對象設定checked屬性
案例4-省市二級關聯
	需求分析:
		當省份的下拉選改變的時候,根據選中的省份查詢其所對應的市,将所對應的市,展示到市的下拉選中.
	技術分析:
		改變事件
		數組
		Dom操作
	/////////////////////
	步驟分析:
		1.确定事件(改變事件)
			給省份的下拉選添加改變事件
		2.編寫changePro函數
			function changePro(){
				a.擷取選中省份所對應的市數組(value)
					var cityArr = arr[value];
				b.擷取市的下拉選對象
					var cityObj = document.getElementById("cityId");
				
				c.周遊市數組,将每一個市拼成option追加到市的下拉選中
					cityObj.innerHTML += "";
					
			}           

複制