天天看點

超全面的JavaWeb筆記day03<JS對象&函數>

1、js的String對象(****)

2、js的Array對象 (****)

3、js的Date對象 (****)

  擷取目前的月 0-11,想要得到準确的月 +1

  擷取星期時候,星期日是 0

4、js的Math對象 (****)

  靜态方法,直接Math.random()

5、js的全局函數 (****)

  直接寫方法名稱 eval()

6、js的函數重載(****面試中問道)

  (1)不存在重載

  (2)可以通過其他方式模拟重載的效果 通過數組arguments

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

7、js的BOM對象(******)

  navigator  screen  location  history

8、window對象(*******)

  - 方法都要掌握

  - setInterval和setTimeout

9、DOM簡介和解析html(*******)

10、document對象(*******)

  - 記住幾個方法

11、案例:window練習(*******)

1、js的String對象

  建立String對象

    var str = "abc";

  方法和屬性(文檔)

    屬性 length:字元串的長度

    方法

    (1)與html相關的方法

      - bold():加粗

      - fontcolor(): 設定字元串的顔色

      - fontsize(): 設定字型的大小

      - link(): 将字元串顯示成超連結

        str4.link("hello.html")

      - sub() sup(): 下标和上标

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         //length屬性
10         var str = "abcde";
11         document.write(str.length);
12 
13         //bold方法
14         document.write("<hr/>");
15         var str1 = "asdf";
16         document.write(str1.bold());
17 
18         //fontcolor
19         document.write("<hr/>");
20         var str2 = "www";
21         document.write(str2.fontcolor("red"));
22 
23         //fontsize
24         document.write("<hr/>");
25         var str3 = "qqqqq";
26         document.write(str3.fontsize(5));
27 
28         //link
29         document.write("<hr/>");
30         var str4 = "haha";
31         document.write(str4.link("hello.html"));
32 
33         //sub 和sup
34         document.write("<hr/>");
35         var s1 = "100";
36         var s2 = "200";
37         var s3 = "300"
38         document.write(s1.sub());
39         document.write(s3);
40         document.write(s2.sup());
41     </script>
42 </body>
43 </html>      

  (2)與java相似的方法

    - concat(): 連接配接字元串

      //concat方法

      var str1 = "abc";

      var str2 = "dfg";

      document.write(str1.concat(str2));

    - charAt():傳回指定指定位置的字元串

      var str3 = "abcdefg";

      document.write(str3.charAt(20)); //字元位置不存在,傳回空字元串

- indexOf(): 傳回字元串位置

      var str4 = "poiuyt";

      document.write(str4.indexOf("w")); //字元不存在,傳回-1

    - split():切分字元串,成數組

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

      var arr1 = str5.split("-");

      document.write("length: "+arr1.length);

    - replace() : 替換字元串

      傳遞兩個參數:

        -- 第一個參數是原始字元

        -- 第二個參數要替換成的字元

      var str6 = "abcd";

      document.write(str6);

      document.write("<br/>");

      document.write(str6.replace("a","Q"));

- substr()和substring()

      var str7 = "abcdefghuiop";

      //document.write(str7.substr(5,5));  //fghui  從第五位開始,向後截取五個字元

        從第幾位開始,向後截取幾位

      document.write("<br/>");

      document.write(str7.substring(3,5)); //de  從第幾位開始到第幾位結束  [3,5)

        從第幾位開始,到第幾位結束,但是不包含最後哪一位

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         //concat方法
10         var str1 = "abc";
11         var str2 = "dfg";
12         document.write(str1.concat(str2));
13 
14         //charAt方法
15         document.write("<hr/>");
16         var str3 = "abcdefg";
17         document.write(str3.charAt(20)); //字元位置不存在,傳回空字元串
18         
19         //indexOf方法
20         document.write("<hr/>");
21         var str4 = "poiuyt";
22         document.write(str4.indexOf("w")); //字元不存在,傳回-1
23 
24         //split方法
25         document.write("<hr/>");
26         var str5 = "a-b-c-d";
27         var arr1 = str5.split("-");
28         document.write("length: "+arr1.length);
29         
30         //replace
31         document.write("<hr/>");
32         var str6 = "abcd";
33         document.write(str6);
34         document.write("<br/>");
35         document.write(str6.replace("a","Q"));
36 
37         //substr  substring
38         document.write("<hr/>");
39         var str7 = "abcdefghuiop";
40         //document.write(str7.substr(5,5));  //fghui  從第五位開始,向後截取五個字元
41 
42         document.write("<br/>");
43         document.write(str7.substring(3,5)); //de  從第幾位開始到第幾位結束  [3,5)
44     </script>
45 </body>
46 </html>      

2、js的Array對象

  建立數組(三種)

    - var arr1 = [1,2,3];

    - var arr2 = new Array(3); //長度是3

    - var arr3 = new Array(1,2,3); //數組中的元素是1 2 3

    - var arr = [];  //建立一個空數組

  屬性:length:檢視數組的長度

  方法

    - concat(): 數組的連接配接

      var arr11 = [1,2,3];

      var arr12 = [4,5,6];

      document.write(arr11.concat(arr12));//1,2,3,4,5,6

- join():根據指定的字元分割數組

      var arr13 = new Array(3);

      arr13[0] = "a";

      arr13[1] = "b";

      arr13[2] = "c";

      document.write(arr13);//a,b,c

      document.write("<br/>");

      document.write(arr13.join("-"));//a-b-c

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

      如果添加的是一個數組,這個時候把數組當做一個整體字元串添加進去

      //push方法

      var arr14 = new Array(3);

      arr14[0] = "tom";

      arr14[1] = "lucy";

      arr14[2] = "jack";

      document.write("old array: "+arr14);//old array: tom,lucy,jack

      document.write("<br/>");

      document.write("old length:"+arr14.length);//old length:3

      document.write("<br/>");

      document.write("new length: "+arr14.push("zhangsan"));//new length: 4

      document.write("<br/>");

      document.write("new array: "+arr14);//new array: tom,lucy,jack,zhangsan

      var arr15 = ["aaa","bbb","ccc"];

      var arr16 = ["www","qqq"];

      document.write("old array:"+arr15);//old array:aaa,bbb,ccc

      document.write("<br/>");

      document.write("old length:"+arr15.length);//old length:3

      document.write("<br/>");

      document.write("new length:"+arr15.push(arr16));//new length:5

      document.write("<br/>");

      document.write("new array: "+arr15);//new array: aaa,bbb,ccc,www,qqq

      for(var i=0;i<arr15.length;i++) {

        alert(arr15[i]);

      }

    - pop():表示 删除最後一個元素,傳回删除的那個元素

      var arr17 = ["zhangsan","lisi","wangwu","zhaoliu"];

      document.write("old array: "+arr17);//old array:zhangsan,lisi,wangwu,zhaoliu

      document.write("<br/>");

      document.write("return: "+arr17.pop());//return: zhaoliu

      document.write("<br/>");

      document.write("new array: "+arr17);//new array: zhangsan,lisi,wangwu

    - reverse():颠倒數組中的元素的順序

      //reverse方法

      document.write("<hr/>");

      var arr18 = ["zhangsan1","lisi1","zhaoliu1","niuqi1"];

      document.write("old array: "+arr18);//old array: zhangsan1,lisi1,zhaoliu1,niuqi1

      document.write("<br/>");

      document.write("new array:"+arr18.reverse());//new array:niuqi1,zhaoliu1,lisi1,zhangsan1

3、js的Date對象

  在java裡面擷取目前時間

    Date date = new Date();

    //格式化

    //toLocaleString()   //2017年8月03日 11:17:12

  js裡面擷取目前時間

    var date = new Date();

    //擷取目前時間

    var date = new Date();

    document.write(date);  // Thu Aug 03 2017 13:22:56 GMT+0800 (中國标準時間)

    //轉換成習慣的格式

    document.write("<hr/>");

    document.write(date.toLocaleString());//2017/8/3 下午1:22:56

  擷取目前的年方法

    getFullYear():得到目前的年

      document.write("year: "+date.getFullYear());//year: 2017

  擷取目前的月方法

    getMonth():擷取目前的月

      傳回的是 0-11月,如果想要得到準确的值,加1

      var date1 = date.getMonth()+1;

      document.write("month: "+date1);//month: 8

  擷取目前的星期

    getDay():星期,傳回的是 (0 ~ 6)

    外國朋友,把星期日作為一周的第一天,星期日傳回的是 0

    而星期一到星期六 傳回的是 1-6

    document.write("week: "+date.getDay());//week: 4

  擷取目前的日

    getDate():得到目前的天 1-31

    document.write("day: "+date.getDate());//day: 3

  擷取目前的小時

    getHours():擷取小時

    document.write("hour: "+date.getHours());//hour: 13

  擷取目前的分鐘

    getMinutes():分鐘

    document.write("minute: "+date.getMinutes());//minute: 22

  擷取目前的秒

    getSeconds(): 秒

    document.write("second: "+date.getSeconds());//second: 56

  擷取毫秒數

    getTime()

    傳回的是1970 1 1 至今的毫秒數

 document.write("times: "+date.getTime());//times: 1501737776787

 應用場景:

      使用毫秒數處理緩存的效果(不有緩存)

​​        http://www.baidu.com?毫秒數​​

4、js的Math對象

  數學的運算

  裡面的都是靜态方法,使用可以直接使用 Math.方法()

  ceil(x): 向上舍入

  floor(x):向下舍入

  round(x):四舍五入

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         var mm = 10.7;
10         
11         document.write("old : "+mm);
12         document.write("<br/>");
13         document.write("ceil: "+Math.ceil(mm));
14 
15         document.write("<br/>");
16         document.write("floor: "+Math.floor(mm));
17         
18         document.write("<br/>");
19         document.write("round: "+Math.round(mm));
20     </script>
21 </body>
22 </html>      

  random():得到随機數(僞随機數0-1)

    - 得到0-9的随機數

      Math.random()10

      Math.floor(Math.random()10));

  //pow(x,y)  2的5次方

    document.write("<hr/>");

    Document.write(Math.pow(2,5));

5、js的全局函數

  由于不屬于任何一個對象,直接寫名稱使用

  eval() : 執行js代碼(如果字元串是一個js代碼,使用方法直接執行)

    var str = "alert('1234');";

    //alert(str);

    eval(str);//1234

  encodeURI() :對字元進行編碼

 var str1 = "測試中文aaa1234";

 var encode1 = encodeURI(str1);

    document.write(encode1);//- %E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87aaa1234

  decodeURI()  :對字元進行解碼

var decode1 = decodeURI(encode1);

document.write(decode1);//測試中文aaa1234

    encodeURIComponent() 和 decodeURIComponent()

  isNaN():判斷目前字元串是否是數字

    -- var str2 = "aaaa";

    alert(isNaN(str2));//true

    如果是數字,傳回false

    如果不是數字,傳回true

  parseInt():類型轉換

    var str3 = "123";

    document.write(parseInt(str3)+1);//124

6、js的函數的重載

  什麼是重載?方法名相同,參數不同

  js的重載是否存在? 不存在

    調用最後一個方法

    把傳遞的參數儲存到 arguments數組裡面

  js裡面是否存在重載?(面試題目)

    (1)js裡面不存在重載。

    (2)但是可以通過其他方式模拟重載的效果 (通過aruguments數組來實作)

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <script type="text/javascript">
 9         function add1() {
10             //比如傳遞的是兩個參數
11             if(arguments.length == 2) {
12                 return arguments[0]+arguments[1];
13 
14             } else if (arguments.length == 3) {
15                 return arguments[0]+arguments[1]+arguments[2];
16 
17             } else if (arguments.length == 4) {
18 
19                 return arguments[0]+arguments[1]+arguments[2]+arguments[3];
20             } else {
21                 return 0;
22             }
23         }
24         //調用
25         alert(add1(1,2));   //NaN
26         alert(add1(1,2,3)); //NaN
27         alert(add1(1,2,3,4));  // 10
28         alert(add1(1,2,3,4,5));  // 10
29     </script>
30 </body>
31 </html>      

7、js的bom對象

  bom:broswer object model: 浏覽器對象模型

  有哪些對象?

  navigator: 擷取客戶機的資訊(浏覽器的資訊)

    - navigator.appName

    - document.write(navigator.appName);

  screen: 擷取螢幕的資訊

    - document.write(screen.width);//1417

      document.write("<br/>");

      document.write(screen.height);//797

  location: 請求url位址

    - href屬性

      擷取到請求的url位址

        - document.write(location.href);//file:///F:/第二階段_JavaWeb階段/超全面的JavaWeb視訊教程/JavaWeb視訊教程_day3/JavaWeb視訊教程_day3-資料源碼/code/08-js的bom對象一.html

      設定url位址

        - 頁面上安置一個按鈕,按鈕上綁定一個事件,當我點選這個按鈕,頁面可以跳轉到另外一個頁面

        - location.href = "hello.html";

        <input type="button" value="tiaozhuan" οnclick="href1();"/>

          Function href1() {

    //alert(“aaaa”);

    location.href = “hello.html”;

    }

         - 滑鼠點選事件  οnclick="js的方法;"

  history:請求的url的曆史記錄

    - 建立三個頁面

      1、建立第一個頁面 a.html 寫一個超連結 到 b.html

      2、建立b.html 超連結 到 c.html

      3、建立c.html

    - 到通路的上一個頁面

      history.back();

      history.go(-1);

    - 到通路的下一個頁面

      history.forward();

      history.go(1);

a.html

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <h1>AAAAAAAAAAAAAAAAAAAAAAA</h1>
 9     <a href="b.html">AAAAAAAAA</a>
10     <script type="text/javascript">
11     </script>
12 </body>
13 </html>      

b.html

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <input type="button" value="back" onclick="back1();"/>
 9     <br/>
10     <input type="button" value="next" onclick="next1();"/>
11     <h1>BBBBBBBBBBBBBBBBBBBBBBB</h1>
12 
13     <a href="c.html">BBBBBBBB</a>
14     <script type="text/javascript">
15         //到上一個頁面
16         function back1() {
17             //history.back();
18             history.go(-1);
19         }
20         //到下一個頁面
21         function next1() {
22             //history.forward();
23             history.go(1);
24         }
25     </script>
26 </body>
27 </html>      

c.html

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <h1>CCCCCCCCCCCCCCCCCCCCCC</h1>
 9     <script type="text/javascript">    
10     </script>
11 </body>
12 </html>      

  window()

    視窗對象

    頂層對象(所用的bom對象都是在window裡面操作的)

    方法

      - window.alert() :頁面彈出一個框,顯示内容

        簡寫alert()

      - confirm():确認框

        - var flag = window.confirm("是否删除");

  If(flag == true) {

  Alert(“删除成功”);

  }else {

  Alert(“删除失敗”)

  }

      - prompt():輸入的對話框

        - window.prompt("please input : ","0");

        - window.prompt("在顯示的内容","輸入框裡面的預設值");

      - open():打開一個新的視窗

        open("打開的新視窗的位址url","","視窗特征,比如視窗寬度和高度")

        - 建立一個按鈕,點選這個按鈕,打開一個新的視窗

  -<input type="button" value="open" οnclick="open1()"/>

        - function open1() {

          window.open("hello.html","","width=200,height=100");

}

      - close():關閉視窗(浏覽器相容性比較差)

        - window.close();

      - 做定時器

      setInterval("js代碼",毫秒數)  1秒=1000毫秒

        - 表示每三秒,執行一次alert方法

        window.setInterval("alert('123');",3000);

      setTimeout("js代碼",毫秒數)

        - 表示在毫秒數之後執行,但是隻會執行一次

        - 表示四秒之後執行js代碼,隻會執行一次

        window.setTimeout("alert('abc');",4000);

      clearInterval(): 清除setInterval設定的定時器

        var id1 = setInterval("alert('123');",3000);//通過setInterval會有一個傳回值

        clearInterval(id1);

      clearTimeout() : 清除setTimeout設定的定時器

        var id2 = setTimeout("alert('abc');",4000);

        clearTimeout(id2);

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <input type="button" value="interval" onclick="clear1();"/>
 9     <br/>
10     <input type="button" value="timeout" onclick="clear2();"/>
11     <script type="text/javascript">
12         //示範setInterval方法
13         //var id1 = setInterval("alert('123');",3000);
14 
15         //示範setTimeout方法
16         var id2 = setTimeout("alert('abc');",4000);
17 
18         //清除setInterval
19         function clear1() {
20             clearInterval(id1);
21         }
22         //清除setTimeout
23         function clear2() {
24             clearTimeout(id2);
25         }
26     </script>
27 </body>
28 </html>      

8、js的dom對象(****)

  dom:document object model: 文檔對象模型

  文檔:

    超文本文檔(超文本标記文檔) html 、xml

  對象:

    提供了屬性和方法

  模型:使用屬性和方法操作超文本标記型文檔

  可以使用js裡面的dom裡面提供的對象,使用這些對象的屬性和方法,對标記型文檔進行操作

  想要對标記型文檔進行操作,首先需要 對标記型文檔裡面的所有内容封裝成對象

    -- 需要把html裡面的标簽、屬性、文本内容都封裝成對象

  要想對标記型文檔進行操作,解析标記型文檔

    - 畫圖分析,如何使用dom解析html

  解析過程

  根據html的層級結構,在記憶體中配置設定一個樹形結構,需要把html中的每部分封裝成對象,

  - document對象:整個文檔

  - element對象:标簽對象

  - 屬性對象

  - 文本對象

  -- Node節點對象:這個對象是這些對象的父對象

    如果在對象裡面找不到想要的方法,這個時候到Node對象裡面去找

  DOM模型有三種:

    DOM level 1:将html文檔封裝成對象。

    DOM level 2:在level 1的基礎上添加新的功能,例如:對于事件和css樣式的支援。

    DOM level 3:支援xml1.0的一些新特性。

  DHTML:是很多技術的簡稱

    html: 封裝資料

    css:使用屬性和屬性值設定樣式

    dom:操作html文檔(标記型文檔)

    javascript:專門指的是js的文法語句(ECMAScript)

9、document對象

  表示整個的文檔

  常用方法

    write()方法:

      (1)向頁面輸出變量(值)

      (2)向頁面輸出html代碼

      - var str = "abc";

      document.write(str);

      document.write("<hr/>");

    getElementById();

      - 通過id得到元素(标簽)

      - //使用getElementById得到input标簽

      var input1 = document.getElementById("nameid");  //傳遞的參數是标簽裡面的id的值

      //得到input裡面的value值

      alert(input1.name);   //标簽對象.屬性名稱

      //向input裡面設定一個值value

      input1.value = "bbbbb";

getElementsByName();

      - 通過标簽的name的屬性值得到标簽

      - 傳回的是一個集合(數組)

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <input type="text" name="name1" value="aaaa"/><br/>
 9     <input type="text" name="name1" value="bbbbb"/><br/>
10     <input type="text" name="name1" value="cccc"/><br/>
11     <input type="text" name="name1" value="dddd"/><br/>
12     <script type="text/javascript">
13 
14         //使用getElementsByName得到input标簽
15         var inputs = document.getElementsByName("name1");
16         //alert(inputs.length);
17         //周遊數組
18         for(var i=0;i<inputs.length;i++) {
19             var input1 = inputs[i];  //每次循環得到input對象,指派到input1裡面
20             alert(input1.value);    //得到每個input标簽裡面的value值
21         }
22     </script>
23 </body>
24 </html>      

    getElementsByTagName("标簽名稱");

      - 通過标簽名稱得到元素

      - //示範getElementsByTagName

      var inputs1 = document.getElementsByTagName("input");  //傳遞的參數,是标簽名稱

      //alert(inputs1.length);

      //周遊數組,得到每個input标簽

      for(var m=0;m<inputs1.length;m++) {

        //得到每個input标簽

        var input1 = inputs1[m];

        //得到value值

        alert(input1.value);

      }

    注意地方

      隻有一個标簽,這個标簽隻能使用name擷取到,這個使用,使用getElementsByName傳回的是一個數組,但是現在隻有一個元素,這個時候不需要周遊,而是可以直接通過數組的下标擷取到值

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <input type="text" name="name11" value="WWWWWW"/>
 9     <script type="text/javascript">
10         //通過name得到input标簽
11         /var inputs2 = document.getElementsByName("name11")[0];
12         alert(inputs2.value);/
13 
14         //通過input名稱擷取
15         var inputss = document.getElementsByTagName("input")[0];
16         alert(inputss.value);
17     </script>
18 </body>
19 </html>      

10、案例:window彈窗案例

  - 實作過程

    1、建立一個頁面

      有兩個輸入項和一個按鈕

      按鈕上面有一個事件:彈出一個新視窗 open

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     編号:<input type="text" id="numid"/><br/>
 9     姓名:<input type="text" id="nameid"/><br/>
10     <input type="button" value="選擇" onclick="open1()"/>
11     <script type="text/javascript">
12         //實作彈出視窗的方法
13         function open1() {
14             //open方法
15             window.open("user.html","","width=250,height=150");
16         }
17     </script>
18 </body>
19 </html>      

  2、建立彈出頁面

    表格

    每一行有一個按鈕和編号和姓名

    按鈕上有一個事件:把目前的編号和姓名,指派到第一個頁面相應的位置

1 <html>
 2 <head>
 3     <title>HTML示例</title>
 4     <style type="text/css">
 5     </style>
 6 </head>
 7 <body>
 8     <table border="1" bordercolor="blue">
 9         <tr>
10             <td>操作</td>
11             <td>編号</td>
12             <td>姓名</td>
13         </tr>
14         <tr>
15             <td><input type="button" value="選擇" onclick="s1('100','東方不敗');"/></td>
16             <td>100</td>
17             <td>東方不敗</td>
18         </tr>
19         <tr>
20             <td><input type="button" value="選擇" onclick="s1('101','嶽不群');"/></td>
21             <td>101</td>
22             <td>嶽不群</td>
23         </tr>
24         <tr>
25             <td><input type="button" value="選擇" onclick="s1('102','林平之');"/></td>
26             <td>102</td>
27             <td>林平之</td>
28         </tr>
29     </table>
30     <script type="text/javascript">
31         //實作s1方法
32         function s1(num1,name1) {
33             //需要把num1和name1指派到window頁面
34             //跨頁面的操作  opener:得到建立這個視窗的視窗 得到window頁面
35             var pwin = window.opener; //得到window頁面
36             pwin.document.getElementById("numid").value = num1;
37             pwin.document.getElementById("nameid").value = name1;
38             //關閉視窗
39             window.close();
40         }
41     </script>
42 </body>
43 </html>      

    -opener:屬性,擷取建立目前視窗的視窗

    - 做這個案例時候會有一個問題