<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裡面寫标簽 <script type="text/javascript"> js代碼;</script>
***代碼
<scripttype="text/javascript">
alert("haha");
</script>
**第二種結合方式:
*首先,在html裡面寫一個标簽,<script type="text/javascript" src="js檔案的路徑"></script>
*其次,建立一個js檔案,在js檔案裡面寫js代碼
***注意一: 當使用了外部引入js檔案的方式時候,在script标簽裡面就不要寫js代碼了,即使寫了也不會執行。
***注意二:script标簽不能在标簽内結束,不能<script type="text/javascript" src="js檔案的路徑"/>
隻能這樣結束 <script type="text/javascript" src="js檔案的路徑"></script>
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<8){
alert(c);
c++;
**for循環語句
//for循環語句
for(vari=0;i<=3;i++) {
alert(i);
**知識引入:
可以直接使用dom對象裡面的方法實作向頁面輸出内容的操作
document.write("固定值、變量、html标簽")
//alert(i);
document.write(i);
document.write("<br/>");
5、js的運算符
*算術運算符
+- * / ....
*關系運算符
<> <= >= ==
*邏輯運算符
&&|| !
*&& : 條件同時滿足
*|| : 隻要一個滿足成立
*三元運算符
?:
a>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("<hr/>");
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中空格需要轉義 &nbsp;
*代碼
//循環行
document.write("<tableborder='1'>");
for(vari=1;i<=9;i++) {
document.write("<tr>");
//循環列
for(varj=1;j<=i;j++) {
document.write("<td>");
document.write(j+"*"+i+"="+i*j);
document.write("</td>");
}
//document.write("<br/>");
document.write("</tr>");
document.write("</table>");
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<arr.length;i++) {
//擷取數組裡面的值
vara = arr[i];
//第一種方式
vararr1 = [10,"aa"];
document.write(arr1);
document.write("<br/>");
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中有<sub>表示下标和<sup>表示上标
=
第二類:與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("<hr/>");
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<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标簽位置
*一般約定:放到</body>後面
*知識的引入
**在表單标簽裡面 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标簽位置約定放到</body>後面
</pre>
本文轉自屠夫章哥 51CTO部落格,原文連結:http://blog.51cto.com/4259297/1665734,如需轉載請自行聯系原作者