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:屬性,擷取建立目前視窗的視窗
- 做這個案例時候會有一個問題