天天看點

【HM】第2課:JavaScript基礎

<pre>

day02

第一天的内容:

         *html标簽裡面的表單标簽

         *html标簽裡面的表格标簽

思維導圖

<a href="http://s3.51cto.com/wyfs02/M02/6F/03/wKiom1WPVbLR_T2gAAF_kmafGpw818.jpg" target="_blank"></a>

1、JavaScript的簡介

         * 什麼是JavaScript:js是一個基于對象和事件驅動的語言,應用用戶端。

         **基于對象:在java裡面如果使用對象需要建立;在js裡面提供一些對象,直接使用

         **事件驅動:每次調用事件産生一個新的效果

         **用戶端:專門指的浏覽器

         *js可以做什麼:js可以實作一些簡單的動态的效果

         * js三個特點:

         **基于事件驅動的

         **安全性特點:不能直接通路本地的檔案

         **跨平台特點:隻有平台上面安裝了支援js的浏覽器可以運作

         * JavaScript和java差別(雷鋒和雷峰塔)

         **JavaScript是網景公司開發的,java是sun公司,現在是oracle産品

         **java是強類型語言,JavaScript是弱類型

                   ***比如在java裡面定義變量: int a = 10; 這樣寫就不正确了int aa = "20";

                   ***在js裡面沒有這些規定,使用一個關鍵字 var b = 10; var c = "10";var f = true;

         **java跨平台性需要依賴虛拟機,但是js隻需要有一個支援js的浏覽器就可以了

         * js的組成:

         **包含三部分

         ***第一部分:ECMAScript

                   *ECMA:European Computer Manufactures Association 是一個組織,歐洲計算機制造商協會

                  * 由這個組織執行規範,這個規範是js的文法,語句....

         ***第二部分:bom對象

                   *browser object model: 浏覽器對象模型

         ***第三部分:dom對象

                   *document object model:文檔對象模型

2、js和html的結合方式

         *js的注釋有兩種:單行注釋// , 多行注釋 /* */

         *java裡面的注釋有三種:單行注釋// , 多行注釋 /* */,文檔注釋 /**  */

         *有兩種結合方式

         **第一種結合方式:在html裡面寫标簽 &lt;script type="text/javascript"&gt; js代碼;&lt;/script&gt;

         ***代碼

                   &lt;scripttype="text/javascript"&gt;

                            alert("haha");

                   &lt;/script&gt;

         **第二種結合方式:

         *首先,在html裡面寫一個标簽,&lt;script type="text/javascript" src="js檔案的路徑"&gt;&lt;/script&gt;

         *其次,建立一個js檔案,在js檔案裡面寫js代碼

         ***注意一: 當使用了外部引入js檔案的方式時候,在script标簽裡面就不要寫js代碼了,即使寫了也不會執行。

         ***注意二:script标簽不能在标簽内結束,不能&lt;script type="text/javascript" src="js檔案的路徑"/&gt;

          隻能這樣結束 &lt;script type="text/javascript" src="js檔案的路徑"&gt;&lt;/script&gt;

3、js的資料類型和變量聲明

         *java八個基本資料類型和對應的包裝類

         *在js裡面定義變量,都使用一個關鍵字 var

         *js有五個原始類型(注意不要和對象的類型弄混了)

         **string:字元串類型

                   varstr = "abc";

         **number:數字類型

                   varaa = 100;

         **boolean:布爾類型

                   varflag = true;

         **null:對象引用為空,空的引用      (??用typeof怎麼展現出來??)

                   **在java裡面,Date date = new Date();

                   **var date = null;

         **undifined: 定義一個變量,但是沒有指派  var cc;

         *運算符:typeof(變量名稱),檢視目前變量的類型

         **代碼

                   //alert(flag);

                   alert(typeof(flag))

         *js的引用類型

4、js的語句(和java相似,隻是變量聲明要用var)

         *java裡面有哪些語句

         **判斷語句 if

         **switch語句

         **循環語句 for  while  do-while

         *js的判斷語句 if

         **=:表示指派,==:表示判斷

                   //if判斷語句

                   vara = 50;

                   if(a== 5) {

                            alert(a);

                   }else {

                            alert("other");

                   }

         *js的switch語句

         **java裡面的switch語句

         **java裡面switch語句在jdk1.7開始支援string類型

         switch(a){

                   case10:

                            break;

                   case5:

                   default:

                            ....

         }

                   //switch語句

                   varb = 51;

                   switch(b){

                            case2:

                                     alert("2");

                                     break;

                            case5:

                                     alert("5");

                            default:

                                     alert("other");

         *js的循環語句

         **while語句

                   //while循環語句

                   varc = 5;

                   while(c&lt;8){

                            alert(c);

                            c++;

         **for循環語句

                   //for循環語句

                   for(vari=0;i&lt;=3;i++) {

                            alert(i);

         **知識引入:

         可以直接使用dom對象裡面的方法實作向頁面輸出内容的操作

         document.write("固定值、變量、html标簽")

                            //alert(i);

                            document.write(i);

                            document.write("&lt;br/&gt;");

5、js的運算符

         *算術運算符

                   +- * / ....

         *關系運算符

                   &lt;&gt; &lt;= &gt;= ==

         *邏輯運算符

                   &amp;&amp;|| !

                   *&amp;&amp; : 條件同時滿足

                   *|| : 隻要一個滿足成立

         *三元運算符

                   ?:

                   a&gt;5? 10 : 0

         ** number類型的操作(易錯點1)

         ***如果在java裡面

                   inta = 123/1000*1000; 在java裡面結果是0

         ***在js的number裡面不區分整數和小數

                   //number類型的操作

                   varaa = 123;

                   document.write(aa/1000*1000);結果是 123(java文法會傳回0)

                   varbb = true;

                   document.write(bb/2);    結果是0.5

         ***如果執行算術操作,值不是一個數字,傳回NaN

         **字元串的相加和相減操作

         ***在java裡面字元串相加,做拼接操作

                   //string的相加和相減

                   varstr = "aa";

                   document.write(str+1);//字元串拼接輸出aa1

                   document.write(str+true);//字元串拼接輸出aatrue

                   document.write("&lt;hr/&gt;");

                   document.write(str-1);//       真正執行了相減運算,如果結果不是數字則輸出NaN

                   var a = '23';

                  outln(a- true);          //輸出22

                  outln(a- false);         //輸出23                  

         **boolean類型的操作

         ***會把boolean類型true當做1;會把boolean類型的false當做0

                   //boolean類型操作

                   document.write(flag+1);//會把boolean類型true當做1

                   varflag1 = false;

                   document.write(flag1+1)//會把boolean類型的false當做0

         **a++和++a差別

         ***a++:先執行再+1

         ***先+1,再執行

         **== :條件判斷

         **===和==差別

         *** == 比較的是值,與類型無關

         *** === 比較是值和類型

         例子:

                   var a = 'true';

                  varb = true;

                  outln((a== b);   //傳回的是false

                   vara = '1';

                  var b = true;

                  outln((a == b) + "--"+  typeof(a) + "--"+  typeof(b));              //傳回true

                  outln(a === b);                   //傳回false

                   vara = '23';

                  var b = 23;

                  outln((a == b));          //傳回的是true

                  outln(a === b);          //傳回的是false,因為a和b的類型不一樣。

6、練習:99乘法表

         *在html中空格需要轉義  &amp;nbsp;

         *代碼

                   //循環行

                   document.write("&lt;tableborder='1'&gt;");

                   for(vari=1;i&lt;=9;i++) {

                            document.write("&lt;tr&gt;");

                            //循環列

                            for(varj=1;j&lt;=i;j++) {

                                     document.write("&lt;td&gt;");

                                     document.write(j+"*"+i+"="+i*j);

                                     document.write("&lt;/td&gt;");

                            }

                            //document.write("&lt;br/&gt;");

                            document.write("&lt;/tr&gt;");

                   document.write("&lt;/table&gt;");

7、js的數組

         *定義一個變量隻能存一個值,但是數組裡面可以存多個值,并且值的類型可以各不相同。

         *java裡面數組定義: String[] arr = {"aa","bb"};

         **在java裡面如果這樣寫,肯定不行的:String[] arr = {10,"bb"};

         *js的定義數組

         **第一種: var arr1 = new Array();

         **第二種: var arr2 = [10,"aa",true];

         **第三種: var arr3 = new Array(5); 表示定義一個數組,數組的長度是5

                   ***指派,通過下标

                   arr3[0]= "aaa";

         **第四種: var arr4 = new Array(5,6,7);表示定義一個數組,數組裡面的元素是 5 67

         *數組裡面的屬性:length,代表數組的長度

         *周遊數組

         for(vari=0;i&lt;arr.length;i++) {

                   //擷取數組裡面的值

                   vara = arr[i];

                   //第一種方式

                   vararr1 = [10,"aa"];

                   document.write(arr1);

                   document.write("&lt;br/&gt;");

                   document.write(arr1.length);

                   //第二種方式

                   vararr2 = new Array(3);

                   arr2[0]= "mary";

                   arr2[1]= "jack";

                   arr2[2]= "lucy";

                   document.write(arr2);

                   document.write(arr2.length);

                   //第三種方式

                   vararr3 = new Array(5,6,7);

                   document.write(arr3);

                   document.write(arr3.length);

         *js數組長度是可變的

                   *長度是最大的下标+1

                   *沒有值,顯示空字元串 ""

                   //js數組是可變的

                   vararr4 = new Array(5);

                   arr4[0]= "aaa";

                   arr4[1]= "bbb";

                   arr4[10]= "ccc";

                   document.write(arr4);              //arr[2-9]的值是為空。

                   document.write(arr4.length);                   //傳回值是11

8、js的String對象

         varstr = "abc";

         *屬性:length 得到字元串的長度

                   //length屬性

                   varstr = "abcdef";

                   document.write(str.length);

         *方法:

         **有兩類:

         第一類:與html相關的方法(改變字元串的樣式的方法),這個比write(标簽)要來得

                                     簡單多了。

                   =bold() 使用粗體顯示字元串。

                            ==document.write(str.bold());

                   =fontcolor() 使用指定的顔色來顯示字元串。

                            ==document.write(str.fontcolor("red"));

                   =fontsize() 使用指定的尺寸來顯示字元串。

                            *在html中font标簽屬性size值 1-7

                            *在fontsize方法裡面值也是1 - 7

                            ==document.write(str2.fontsize(7));

                   =link() 将字元串顯示為連結

                            ==document.write(str3.link("0-html的轉義.html"));

                   =sub()和sup()方法

                            *在html中有&lt;sub&gt;表示下标和&lt;sup&gt;表示上标

                            =

         第二類:與java相似的方法(在java裡面也有類似的方法)

         =charAt() 傳回在指定位置的字元

                   ==var str = "abcd";

                   document.write(str.charAt(10));//如果查找的位置不存在,傳回空字元串""(在java

                                                        文法中會直接抛出越界異常)

         =concat() 連接配接字元串

                   ==var a = "hello";

                   varb = "world";

                   document.write(a.concat(b));

         =indexOf() 檢索字元串或字元,不存在則傳回-1-------注意一點:O字母要大寫----------

                   ==var str1 = "abcdef";

                   document.write(str1.indexOf("h"));

         =split() 把字元串分割為字元串數組

                   ==var str2 = "a-b-c-d";

                   vararr = str2.split("-");//分割之後傳回的是數組

                   document.write(arr.length);

         =substr() 從起始索引号提取字元串中指定數目的字元。

         =substring() 提取字元串中兩個指定的索引号之間的字元,不包括後面的索引位置。

                   ==document.write("&lt;hr/&gt;");

                   vars = "abcdefghytre";

                   document.write(s.substr(3,5));  //defgh ,

                            //第一個參數字元的開始位置(從0開始);第二個參數從開始位置向後擷取幾個字元

                   document.write(s.substring(3,5));//de  [3,5),

                            //第一個參數字元的開始位置,第二個參數表示結束位置但是不包含結束位置

10、js的Array對象

         *建立數組

         *var arr1 = [1,"aa"];

         *var arr2 = new Array(3);

         *var arr2 = new Array(3,5,6);

         *屬性:length,擷取數組的長度

         =concat() 連接配接數組,并傳回結果(object對象類型)。

                   ==var arr1 = ["mary","jack","tom"];

                   vararr2 = ["lucy","zhangsan","wanger"];

                   document.write(arr1.concat(arr2));

         = join() 把數組通過指定的分隔符進行分隔,傳回string類型。

                   ==var arr3 = new Array(3);

                   arr3[0]= "aa";

                   arr3[1]= "bb";

                   arr3[2]= "cc";

                   document.write(arr3.join("-"));

         =pop() 删除并傳回數組的最後一個元素,如果數組為空傳回undefined。

                   vararr4 = ["mary","jack","tom","lucy"];

                   //輸出原始值

                   document.write("old:"+arr4);

                   //執行pop方法的傳回值

                   document.write("return:"+arr4.pop());

                   //執行pop方法之後的數組的值

                   document.write("new:"+arr4);

                   vara = new Array();

                  outln(a.pop());          //傳回undefined

                   vara = new Array(2);

         =push() 向數組的末尾添加元素,并傳回新數組的長度

                   vararr5 =["mary","jack","tom","lucy","wangwu"];

                   document.write("old:"+arr5);

                   //數組原始的長度

                   document.write("oldlength: "+arr5.length);

                   //執行push方法的傳回值

                   document.write("return:"+arr5.push("zhaoliu"));

                   //執行push方法之後數組的值

                   document.write("new:"+arr5);

                   //執行push方法之後數組的長度

                   document.write("newlength: "+arr5.length);

                   ==如果使用push方法添加數組,把數組當做一個整體添加進去,即使添加的數組

                            有多個元素,新數組的長度也隻會加1.

                   vararr6 = ["AAA","BBB","CCC"];

                   vararr7 = ["TTT","WWW"];

                   document.write("old:"+arr6);

                   document.write("oldlength: "+arr6.length);

                   document.write("return:"+arr6.push(arr7));

                   document.write("new:"+arr6);

                   document.write("newlength: "+arr6.length);

                   //周遊

                   for(vari=0;i&lt;arr6.length;i++) {

                            alert(arr6[i])

         =reverse() 颠倒數組中元素的順序。

                   ==var arr8 = ["AAA","BBB","CCC"];

                   document.write(arr8);

                   document.write(arr8.reverse());

11、js的Date對象

         *在java裡面擷取目前時間 Date date = new Date();

         *在js擷取目前時間 var date = new Date();

                   //擷取目前的時間

                   vardate = new Date();

                   document.write(date);

                   //把時間轉換成目前格式的時間 

         =toLocaleString() 根據本地時間格式,把Date 對象轉換為字元串,注意Locale後面的

                                                                                                                                            e字母容易忘掉寫。

                   ==document.write(date.toLocaleString());

         *擷取目前年,月,星期,日,小時,分,秒,毫秒

         =擷取目前的年:getFullYear() 從 Date 對象以四位數字傳回年份,getYear()是傳回兩

                   位(已過時)

                   ==document.write(date.getFullYear());

         =擷取目前的月:getMonth() 從 Date 對象傳回月份 (0 ~ 11)。

                   ==document.write(date.getMonth()+1);

                   *傳回月份 (0 ~ 11),所有想要得到準确的月份,需要+1

         =擷取目前的星期:getDay() 從 Date 對象傳回一周中的某一天 (0 ~ 6)。

                   ==document.write(date.getDay());

                   *擷取星期一到星期六傳回1-6;但是擷取星期日傳回 0

         =擷取目前的日:getDate() 從 Date 對象傳回一個月中的某一天 (1 ~ 31)。

                   ==document.write(date.getDate());

         =擷取目前小時:getHours()

                   ==document.write(date.getHours());

         =擷取目前分鐘:getMinutes()

                   ==document.write(date.getMinutes());

         =擷取目前的秒:getSeconds()

                   ==document.write(date.getSeconds());

         =擷取目前毫秒:1970至今的毫秒數getTime() 傳回 1970 年 1 月 1 日至今的毫秒數

                   ==document.write(date.getTime());

                   *應用場景:

                   **第一種用途:讓某個值每次都不相同(把每個使用者名添加随機的毫秒數)

                   **第二種用途:防止請求緩存(在請求的位址後添加一個參數是毫秒數)??????

12、js的Math對象(和java一樣,裡面的屬性和方法都是靜

           态的)

         *屬性:PI,圓周率 3.14

         =floor(x) 對數進行下(小)舍入       //注意負數

         =ceil(x) 對數進行上(大)舍入         //注意負數

         =round(x) 把數四舍五入為最接近的整數

                   ==var c = 10.1;

                   //floor(x)對數進行下舍入

                   document.write(Math.floor(c));//10

                   //ceil(x)對數進行上舍入

                   document.write(Math.ceil(c));//11

                   //round(x)把數四舍五入為最接近的整數

                   vara = 10.5;

                   document.write(Math.round(a));

         =random() 傳回 0 ~ 1 之間的随機數,包括0不包括1.

                   ==//random() 傳回 0 ~ 1 之間的随機數

                   document.write(Math.random());

                   ==得到0-9之間的随機數,結合其它的數字函數和運算可以得到自定義範圍的随

                            機數。

                   document.write(Math.floor(Math.random()*10));

         =max(x,y) 傳回 x 和 y 中的最高值

         =min(x,y) 傳回 x 和 y 中的最低值

         =pow(x,y) 傳回 x 的 y 次幂

13、js的RegExp對象

         *正規表達式:定義字元串出現的規則

                   =test 檢索字元串中指定的值。傳回 true 或 false

                            ==var reg = new RegExp("[a]");//定義正規表達式

                            varstr = "zhng";

                            document.write(reg.test(str));

                            *調用對象裡面的test方法,傳遞要比對字元串,如果可以比對傳回true,否則傳回false

安裝三類浏覽器:ie8及其以上版本,火狐浏覽器,谷歌浏覽器

14、js的bom對象

         *浏覽器對象模型

         *Navigator :擷取浏覽器的資訊

         *screen :擷取目前螢幕的資訊        

         *Location : URL 的資訊,屬性href 得到目前請求的 URL位址。

         *history :擷取浏覽器裡面通路的路徑的曆史

         * window對象(重點掌握)

         **代表一個視窗對象,頂層對象

         =alert():向頁面彈出框  window.alert();window可以省略

         =setInterval() 按照指定的周期(以毫秒計)來調用函數或計算表達式。

                   ==表示在一定的時間内,重複執行js代碼

                   *在每一秒以内重複執行 alert("abc");

                   ==//每三秒,執行一次alert操作

                   window.setInterval("alert('abc');",3000):第一個參數是js代碼(注意要加雙引号,如

                                                        果js代碼中有雙引号,應改為單引号),第二個參數是毫秒數

         =setTimeout() 在指定的毫秒數後調用函數或計算表達式。(注意o字母小寫)

                   ==表示在一定的時間之後,執行一次js代碼

                   !!而且應注意以上兩個方法受浏覽器的相容性影響大,如果出現問題,應多找幾

                            個浏覽器調試。

15、js的全局變量和局部變量

         *在java裡面是成員變量

         *全局變量:在script标簽裡面定義一個變量,這個變量可以在html中的任意script标簽裡面都可以使用

         *局部變量:在某個方法裡面定義一個變量,這個變量隻能在這個方法裡面使用

         **js定義方法(函數) function add1() { }

         *在ie裡面自帶了調試工具,點選鍵盤上面F12,在浏覽器下面出現一個條,選擇控制台,得到錯誤資訊

16、script标簽位置

         *一般約定:放到&lt;/body&gt;後面

         *知識的引入

         **在表單标簽裡面 type="button"

         **點選按鈕,觸發一個事件,滑鼠點選事件

         *html的解析是從上到下進行解析的,如果在body标簽裡面寫輸入項,把script标簽放到head裡面

         ,如果在js裡面擷取輸入項的值肯定擷取不到的,因為解析到擷取操作時候,還沒有解析到輸入項那部分,是以肯定得不到

===========================================================================================

課程總結:

         (1)什麼是js?

         (2)js的三個特點

         (3)js和java的差別

         (4)js的組成

         (5)js的原始類型和變量聲明

         *有五個原始類型 string number  boolean  null undifined

         *var定義變量

         (6)js的語句(與java類似)

         *=表示指派,==判斷

         (7)js的運算符

         *number不區分整數和小數

         *string操作+拼接字元串,-真正減法操作

         *不是數字傳回NaN

         *==和===差別:==比較的是值,===比較值和類型

         (8)js的數組

         *數組的長度:最大的下标+1

         (9)js的String對象

         *屬性:length,擷取字元串的長度

         *第一類與html相關的方法

         (10)js的Array對象

         *push方法:添加元素

         (11)js的Date對象

         *擷取目前年,月,星期,日,小時,分,秒

         **擷取毫米數 使用 getTime方法

         (12)js的Math對象

         *方法,直接Math.方法名

         (13)js的RegExp對象

         *方法 test方法

         (14)js的bom對象

         *navigator、screen、location、history

         **window對象是一個頂層對象,表示一個視窗

         **三個方法

         ***alert()

         ***setInterval()

         ***setTimeout()

         (15)js的全局變量和局部變量

         (16)script标簽位置約定放到&lt;/body&gt;後面

&lt;/pre&gt;

      本文轉自屠夫章哥  51CTO部落格,原文連結:http://blog.51cto.com/4259297/1665734,如需轉載請自行聯系原作者