1.如何插入javascript
JavaScript代碼寫在<script></script>之間。

2.引用JS外部文件
<script src="script.js"></script>



3、js在頁面中的位置
放在<head>部分
最常用的方式是在頁面中head部分放置<script>元素,瀏覽器解析head部分就會執行這個代碼,然后才解析頁面的其余部分。
放在<body>部分
JavaScript代碼在網頁讀取到該語句的時候就會執行。

4、javascript語句和符號
- “;”分號要在英文狀態下輸入,同樣,JS中的代碼和符號都要在英文狀態下輸入。
- 雖然分號“;”也可以不寫,記得在語句末尾寫上分號。
5、注釋
單行注釋,在注釋內容前加符號 “//”。
<script type="text/javascript">
document.write("單行注釋使用'//'"); // 我是注釋,該語句功能在網頁中輸出內容
</script>
多行注釋以"/*"開始,以"*/"結束。
<script type="text/javascript">
document.write("多行注釋使用/*注釋內容*/");
/*
多行注釋
養成書寫注釋的良好習慣
*/
</script>
6、變量
定義變量使用關鍵字var,語法如下:
var 變量名
變量名可以任意取名,但要遵循命名規則:
1.變量必須使用字母、下划線(_)或者美元符($)開始。
2.然后可以使用任意多個英文字母、數字、下划線(_)或者美元符($)組成。
3.不能使用JavaScript關鍵詞與JavaScript保留字。
變量要先聲明再賦值,如下:
var mychar;
mychar="javascript";
var mynum = 6;
變量可以重復賦值,如下:
var mychar;
mychar="javascript";
mychar="hello";
注意:
1. 在JS中區分大小寫,如變量mychar與myChar是不一樣的,表示是兩個變量。
2. 變量雖然也可以不聲明,直接使用,但不規范,需要先聲明,后使用。
7、判斷語句
語法:
if(條件)
{ 條件成立時執行的代碼 }
else
{ 條件不成立時執行的代碼 }
假設我們通過年齡來判斷是否為成年人,如年齡大於等於18歲,是成年人,否則不是成年人。代碼表示如下:
<script type="text/javascript">
var myage = 18;
if(myage>=18) //myage>=18是判斷條件
{ document.write("你是成年人。");}
else //否則年齡小於18
{ document.write("未滿18歲,你不是成年人。");}
</script>
8、函數
如何定義一個函數呢?基本語法如下:
function 函數名()
{
函數代碼;
}
說明:
1. function定義函數的關鍵字。
2. "函數名"你為函數取的名字。
3. "函數代碼"替換為完成特定功能的代碼。
我們來編寫一個實現兩數相加的簡單函數,並給函數起個有意義的名字:“add2”,代碼如下:
function add2(){ var sum = 3 + 2; alert(sum); }
add2();
函數調用:
9、輸出內容
document.write() 可用於直接向 HTML 輸出流寫內容。簡單的說就是直接在網頁中輸出內容。
第一種:輸出內容用""括起,直接輸出""號內的內容。
<script type="text/javascript">
document.write("I love JavaScript!"); //內容用""括起來,""里的內容直接輸出。
</script>
第二種:通過變量,輸出內容
<script type="text/javascript">
var mystr="hello world!";
document.write(mystr); //直接寫變量名,輸出變量存儲的內容。
</script>
第三種:輸出多項內容,內容之間用+號連接。
<script type="text/javascript">
var mystr="hello";
document.write(mystr+"I love JavaScript"); //多項內容之間用+號連接
</script>
第四種:輸出HTML標簽,並起作用,標簽使用""括起來。
<script type="text/javascript">
var mystr="hello";
document.write(mystr+"<br>");//輸出hello后,輸出一個換行符
document.write("JavaScript");
</script>
10、JS中如何輸出空格
解決方法:
1. 使用輸出html標簽 來解決
2. 使用CSS樣式來解決
在輸出時添加“white-space:pre;”樣式屬性。這個樣式表示"空白會被瀏覽器保留"
11、alert對話框
語法:
alert(字符串或變量);
看下面的代碼:
<script type="text/javascript">
var mynum = 30;
alert("hello!");
alert(mynum);
</script>
注:alert彈出消息對話框(包含一個確定按鈕)。
12、JavaScript-提問(prompt 消息對話框)
prompt彈出消息對話框,通常用於詢問一些需要與用戶交互的信息。彈出消息對話框(包含一個確定按鈕、取消按鈕與一個文本輸入框)。
語法:
prompt(str1, str2);
參數說明:
str1: 要顯示在消息對話框中的文本,不可修改
str2:文本框中的內容,可以修改
返回值:
1. 點擊確定按鈕,文本框中的內容將作為函數返回值
2. 點擊取消按鈕,將返回null
看看下面代碼:
var myname=prompt("請輸入你的姓名:");
if(myname!=null)
{ alert("你好"+myname); }
else
{ alert("你好 my friend."); }
結果:
注:在用戶點擊對話框的按鈕前,不能進行任何其它操作。
13、打開新窗口(window.open)
open() 方法可以查找一個已經存在或者新建的瀏覽器窗口。
語法:
window.open([URL], [窗口名稱], [參數字符串])
參數說明:
URL:可選參數,在窗口中要顯示網頁的網址或路徑。如果省略這個參數,或者它的值是空字符串,那么窗口就不顯示任何文檔。
窗口名稱:可選參數,被打開窗口的名稱。
1.該名稱由字母、數字和下划線字符組成。
2."_top"、"_blank"、"_self"具有特殊意義的名稱。
_blank:在新窗口顯示目標網頁
_self:在當前窗口顯示目標網頁
_top:框架網頁中在上部窗口中顯示目標網頁
3.相同 name 的窗口只能創建一個,要想創建多個窗口則 name 不能相同。
4.name 不能包含有空格。
參數字符串:可選參數,設置窗口參數,各參數用逗號隔開。
參數表:

例如:打開https://i.cnblogs.com網站,大小為300px * 200px,無菜單,無工具欄,無狀態欄,有滾動條窗口:
<script type="text/javascript"> window.open(https://i.cnblogs.com','_blank','width=300,height=200,menubar=no,toolbar=no, status=no,scrollbars=yes')
</script>
注意:運行結果考慮瀏覽器兼容問題。
14、關閉窗口(window.close)
close()關閉窗口
用法:
window.close(); //關閉本窗口
或
<窗口對象>.close(); //關閉指定的窗口
例如:關閉新建的窗口。
<script type="text/javascript">
var mywin=window.open('http://www.imooc.com'); //將新打的窗口對象,存儲在變量mywin中
mywin.close();
</script>
注意:上面代碼在打開新窗口的同時,關閉該窗口,看不到被打開的窗口。
15、確認(confirm 消息對話框)
confirm 消息對話框通常用於允許用戶做選擇的動作,如:“你對嗎?”等。彈出對話框(包括一個確定按鈕和一個取消按鈕)。
語法:
confirm(str);
參數說明:
str:在消息對話框中要顯示的文本
返回值: Boolean值
返回值:
當用戶點擊"確定"按鈕時,返回true
當用戶點擊"取消"按鈕時,返回false
注: 通過返回值可以判斷用戶點擊了什么按鈕
16、dom結構
HTML文檔可以說由節點構成的集合,三種常見的DOM節點:
1. 元素節點:<html>、<body>、<p>等都是元素節點,即標簽。
2. 文本節點:向用戶展示的內容,如<li>...</li>中的JavaScript、DOM、CSS等文本。
3. 屬性節點:元素屬性,如<a>標簽的鏈接屬性href="http://www.imooc.com"。
17、通過id獲取元素放在
語法:
document.getElementById(“id”)
注意:放在獲取元素語句下面
18、innerHTML使用
innerHTML 屬性用於獲取或替換 HTML 元素的內容。
語法:
Object.innerHTML
解釋:獲取對象文本節點,可作為變量並賦值修改
注意:
1.Object是獲取的元素對象,如通過document.getElementById("ID")獲取的元素。
2.注意書寫,innerHTML區分大小寫。實例如下:

19、改變元素屬性及樣式
語法:
Object.style.property=new style;
注意:Object是獲取的元素對象,如通過document.getElementById("id")獲取的元素。
基本屬性表(property):

注意:該表只是一小部分CSS樣式屬性,其它樣式也可以通過該方法設置和修改。
20、顯示和隱藏(display屬性)
網頁中經常會看到顯示和隱藏的效果,可通過display屬性來設置。
語法:
Object.style.display = value
注意:Object是獲取的元素對象,如通過document.getElementById("id")獲取的元素。
value取值:
21、變量
1.必須以字母、下划線或美元符號開頭,后面可以跟字母、下划線、美元符號和數字。如下:
正確:
mysum
_mychar
$numa1
錯誤:
6num //開頭不能用數字
%sum //開頭不能用除(_ $)外特殊符號,如(% + /等)
sum+num //開頭中間不能使用除(_ $)外特殊符號,如(% + /等)
2.變量名區分大小寫,如:A與a是兩個不同變量。
3.不允許使用JavaScript關鍵字和保留字做變量名。
聲明變量語法: var 變量名;
var,在JavaScript中是關鍵字(即保留字),這個關鍵字的作用是聲明變量,並為"變量"准備位置(即內存)。
var mynum ; //聲明一個變量mynum
可以一次找多個盒子,所以Var還可以一次聲明多個變量,變量之間用","逗號隔開。
var num1,mun2 ; //聲明一個變量num1
注意:變量也可以不聲明,直接使用,但為了規范,需要先聲明,后使用。
22、自加一,自減一 ( ++和- -)
算術操作符除了(+、-、*、/)外,還有兩個非常常用的操作符,自加一“++”;自減一“--”。首先來看一個例子:
mynum = 10;
mynum++; //mynum的值變為11
mynum--; //mynum的值又變回10
上面的例子中,mynum++使mynum值在原基礎上增加1,mynum--使mynum在原基礎上減去1,其實也可以寫成:
mynum = mynum + 1;//等同於mynum++
mynum = mynum - 1;//等同於mynum--
23、邏輯操作符
邏輯或操作符值表:

注意: 如果A為真,A || B為真,不會在執行B; 反之,如果A為假,要由 B 的值來決定 A || B 的值。
24、數組
創建數組語法:
數組的表達方式:
第一步:創建數組var myarr=new Array();
第二步:給數組賦值
myarr[1]=" 張三";
myarr[2]=" 李四";
var array=['11','22']
注意:
和java不一樣,數組是[]來括起來數組內容的,
java是{}來括起來里面的內容
語法:
myarray.length; //獲得數組myarray的長度
25、二位數組
1. 二維數組的定義方法一
var myarr=new Array(); //先聲明一維
for(var i=0;i<2;i++){ //一維長度為2
myarr[i]=new Array(); //再聲明二維
for(var j=0;j<3;j++){ //二維長度為3
myarr[i][j]=i+j; // 賦值,每個數組元素的值為i+j
}
}
將上面二維數組,用表格的方式表示:
2. 二維數組的定義方法二
var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3]]
3. 賦值
myarr[0][1]=5; //將5的值傳入到數組中,覆蓋原有值。
說明: myarr[0][1] ,0 表示表的行,1表示表的列。
26、if語句
語法:
if(條件)
{ 條件成立時執行代碼}
語法:
if(條件)
{ 條件成立時執行的代碼}
else
{條件不成立時執行的代碼}
多重判斷嵌套
語法:
if(條件1)
{ 條件1成立時執行的代碼}
else if(條件2)
{ 條件2成立時執行的代碼}
...
else if(條件n)
{ 條件n成立時執行的代碼}
else
{ 條件1、2至n不成立時執行的代碼}
27、多種選擇(switch語句)
語法:
switch(表達式)
{
case值1:
執行代碼塊 1
break;
case值2:
執行代碼塊 2
break;
...
case值n:
執行代碼塊 n
break;
default:
與 case值1 、 case值2...case值n 不同時執行的代碼
}
語法說明:
Switch必須賦初始值,值與每個case值匹配。滿足執行該 case 后的所有語句,並用break語句來阻止運行下一個case。
28、for循環
for語句結構:
for(初始化變量;循環條件;循環迭代)
{
循環語句
}
29、while/do...while循環
while語句結構:
while(判斷條件)
{
循環語句
}
do...while語句結構:
do
{
循環語句
}
while(判斷條件)
30、定義函數
function 函數名( )
{
函數體;
}
31、有參數的函數
function 函數名(參數1,參數2)
{
函數代碼
}
32、返回值函數
function add2(x,y)
{
sum = x + y;
return sum; //返回函數值,return后面的值叫做返回值。
}
33、事件

- 鼠標單擊事件( onclick )
- 鼠標經過事件(onmouseover)
- 鼠標移開事件(onmouseout)
- 光標聚焦事件(onfocus)
- 失焦事件(onblur)
- 內容選中事件(onselect)
- 文本框內容改變事件(onchange)
34、加載事件(onload)
事件會在頁面加載完成后,立即發生,同時執行被調用的程序。
注意:1. 加載頁面時,觸發onload事件,事件寫在<body>標簽內。
2. 此節的加載頁面,可理解為打開一個新頁面時。
如下代碼,當加載一個新頁面時,彈出對話框“加載中,請稍等…”。
35、卸載事件(onunload)
當用戶退出頁面時(頁面關閉、頁面刷新等),觸發onUnload事件,同時執行被調用的程序。
注意:不同瀏覽器對onunload事件支持不同。
如下代碼,當退出頁面時,彈出對話框“您確定離開該網頁嗎?”。
36、date對象
定義一個時間對象 :
var Udate=new Date();
注意:使用關鍵字new,Date()的首字母必須大寫。
使 Udate 成為日期對象,並且已有初始值:當前時間(當前電腦系統時間)。
如果要自定義初始值,可以用以下方法:
var d = new Date(2012, 10, 1); //2012年10月1日
var d = new Date('Oct 1, 2012'); //2012年10月1日
我們最好使用下面介紹的“方法”來嚴格定義時間。
訪問方法語法:“<日期對象>.<方法>”
Date對象中處理時間和日期的常用方法:
37、返回/設置年份方法
get/setFullYear() 返回/設置年份,用四位數表示。
var mydate=new Date();//當前時間2014年3月6日
document.write(mydate+"<br>");//輸出當前時間
document.write(mydate.getFullYear()+"<br>");//輸出當前年份
mydate.setFullYear(81); //設置年份
document.write(mydate+"<br>"); //輸出年份被設定為 0081年。
注意:不同瀏覽器, mydate.setFullYear(81)結果不同,年份被設定為 0081或81兩種情況。
結果:
Thu Mar 06 2014 10:57:47 GMT+0800
2014
Thu Mar 06 0081 10:57:47 GMT+0800
注意:
1.結果格式依次為:星期、月、日、年、時、分、秒、時區。(火狐瀏覽器)
2. 不同瀏覽器,時間格式有差異。
3.getDay() 返回星期,返回的是0-6的數字,0 表示星期天。
4.get/setTime() 返回/設置時間
38、String字符串
聲明:
var mystr = "I love JavaScript!"
定義mystr字符串后,我們就可以訪問它的屬性和方法。
獲得字符串長度:
var mystr="Hello World!";
var myl=mystr.length;
將字符串小寫字母轉換為大寫:
使用 String 對象的 toUpperCase() 方法來
var mystr="Hello world!";
var mynum=mystr.toUpperCase();
使用toLowerCase()方法,將字符串所有大寫字母都變成小寫的字符串。
39、返回指定位置的字符
語法:
stringObject.charAt(index)
參數說明:
1.字符串中第一個字符的下標是 0。最后一個字符的下標為字符串長度減一(string.length-1)。
2.如果參數 index 不在 0 與 string.length-1 之間,該方法將返回一個空字符串。
40、返回指定的字符串首次出現的位置
indexOf() 方法可返回某個指定的字符串值在字符串中首次出現的位置。
語法
stringObject.indexOf(substring, startpos)
參數說明:
1.該方法將從頭到尾地檢索字符串 stringObject,看它是否含有子串 substring。
2.可選參數,從stringObject的startpos位置開始查找substring,如果沒有此參數將從stringObject的開始位置查找。
3.如果找到一個 substring,則返回 substring 的第一次出現的位置。stringObject 中的字符位置是從 0 開始的。
注意:
1.indexOf() 方法區分大小寫。
2.如果要檢索的字符串值沒有出現,則該方法返回 -1。
41、字符串分割split()
知識講解:
split() 方法將字符串分割為字符串數組,並返回此數組。
語法:
stringObject.split(separator,limit)
limit返回數組的長度最大值
參數說明:
注意:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每個字符之間都會被分割。
使用指定符號分割字符串,代碼如下:
var mystr = "www.imooc.com";
document.write(mystr.split(".")+"<br>");
document.write(mystr.split(".", 2)+"<br>");
42、提取字符串substring()
語法:
stringObject.substring(startPos,stopPos)
注意:
1. 返回的內容是從 start開始(包含start位置的字符)到 stop-1 處的所有字符,其長度為 stop 減start。
2. 如果參數 start 與 stop 相等,那么該方法返回的就是一個空串(即長度為 0 的字符串)。
3. 如果 start 比 stop 大,那么該方法在提取子串之前會先交換這兩個參數。
43、提取指定數目的字符substr()
substr() 方法從字符串中提取從 startPos位置開始的指定數目的字符串。
語法:
stringObject.substr(startPos,length)
參數說明:

注意:如果參數startPos是負數,從字符串的尾部開始算起的位置。也就是說,-1 指字符串中最后一個字符,-2 指倒數第二個字符,以此類推。
如果startPos為負數且絕對值大於字符串長度,startPos為0。
使用 substr() 從字符串中提取一些字符,
44、Math對象
Math對象,提供對數據的數學計算。
使用 Math 的屬性和方法,代碼如下:
<script type="text/javascript">
var mypi=Math.PI;
var myabs=Math.abs(-15);
document.write(mypi);
document.write(myabs);
</script>
注意:Math 對象是一個固有的對象,無需創建它,直接把 Math 作為對象使用就可以調用其所有屬性和方法。這是它與Date,String對象的區別。
Math 對象屬性:

Math 對象方法:

45、向上取整ceil()
ceil() 方法可對一個數進行向上取整。
語法:
Math.ceil(x)
參數說明:
注意:它返回的是大於或等於x,並且與x最接近的整數。
46、向下取整floor()
floor() 方法可對一個數進行向下取整。
語法:
Math.floor(x)
47、四舍五入round()
round() 方法可把一個數字四舍五入為最接近的整數。
語法:
Math.round(x)
參數說明:

注意:
1. 返回與 x 最接近的整數。
2. 對於 0.5,該方法將進行上舍入。(5.5 將舍入為 6)
3. 如果 x 與兩側整數同等接近,則結果接近 +∞方向的數字值 。(如 -5.5 將舍入為 -5; -5.52 將舍入為 -6),如下圖:
48、隨機數 random()
random() 方法可返回介於 0 ~ 1(大於或等於 0 但小於 1 )之間的一個隨機數。
語法:
Math.random();
注意:返回一個大於或等於 0 但小於 1 的符號為正的數字值。
49、Array 數組對象
數組對象是一個對象的集合,里邊的對象可以是不同類型的。數組的每一個成員對象都有一個“下標”,用來表示它在數組中的位置,是從零開始的
數組定義的方法:
1. 定義了一個空數組:
var 數組名= new Array();
2. 定義時指定有n個空元素的數組:
var 數組名 =new Array(n);
3.定義數組的時候,直接初始化數據:
var 數組名 = [<元素1>, <元素2>, <元素3>...];
我們定義myArray數組,並賦值,代碼如下:
var myArray = [2, 8, 6];
說明:定義了一個數組 myArray,里邊的元素是:myArray[0] = 2; myArray[1] = 8; myArray[2] = 6。
數組元素使用:
數組名[下標] = 值;
注意: 數組的下標用方括號括起來,從0開始。
數組屬性:
length 用法:<數組對象>.length;返回:數組的長度,即數組里有多少個元素。它等於數組里最后一個元素的下標加一。
數組方法:
50、數組連接concat()
concat() 方法用於連接兩個或多個數組。此方法返回一個新數組,不改變原來的數組。
語法
arrayObject.concat(array1,array2,...,arrayN)
注意: 該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。
實例:
<script type="text/javascript">
var mya1= new Array("hello!") var mya2= new Array("I","love"); var mya3= new Array("JavaScript","!"); var mya4=mya1.concat(mya2,mya3); document.write(mya4); </script>
51、指定分隔符連接數組元素join()
join()方法用於把數組中的所有元素放入一個字符串。元素是通過指定的分隔符進行分隔的。
語法:
arrayObject.join(分隔符)
參數說明:

52、顛倒數組元素順序reverse()
reverse() 方法用於顛倒數組中元素的順序。
語法:
arrayObject.reverse()
注意:該方法會改變原來的數組,而不會創建新的數組。
53、選定元素slice()
slice() 方法可從已有的數組中返回選定的元素。
語法
arrayObject.slice(start,end)
參數說明:
1.返回一個新的數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。
2. 該方法並不會修改數組,而是返回一個子數組。
注意:
1. 可使用負值從數組的尾部選取元素。
2.如果 end 未被規定,那么 slice() 方法會選取從 start 到數組結尾的所有元素。
3. String.slice() 與 Array.slice() 相似。
54、數組排序sort()
sort()方法使數組中的元素按照一定的順序排列。
語法:
arrayObject.sort(方法函數)
參數說明:

1.如果不指定<方法函數>,則按unicode碼順序排列。
2.如果指定<方法函數>,則按<方法函數>所指定的排序方法排序。
myArray.sort(sortMethod);
注意: 該函數要比較兩個值,然后返回一個用於說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a 和 b,其返回值如下:
若返回值<=-1,則表示 A 在排序后的序列中出現在 B 之前。
若返回值>-1 && <1,則表示 A 和 B 具有相同的排序順序。
若返回值>=1,則表示 A 在排序后的序列中出現在 B 之后。
1.使用sort()將數組進行排序,代碼如下:
<script type="text/javascript">
var myarr1 = new Array("Hello","John","love","JavaScript");
var myarr2 = new Array("80","16","50","6","100","1");
document.write(myarr1.sort()+"<br>");
document.write(myarr2.sort());
</script>
運行結果:
Hello,JavaScript,John,love
1,100,16,50,6,80
注意:上面的代碼沒有按照數值的大小對數字進行排序。
2.如要實現這一點,就必須使用一個排序函數,代碼如下:
<script type="text/javascript">
function sortNum(a,b) {
return a - b;
//升序,如降序,把“a - b”該成“b - a”
}
var myarr = new Array("80","16","50","6","100","1");
document.write(myarr + "<br>");
document.write(myarr.sort(sortNum));
</script>
運行結果:
80,16,50,6,100,1
1,6,16,50,80,100
55、JavaScript 計時器
56、計時器setInterval()
在執行時,從載入頁面后每隔指定的時間執行代碼。
語法:
setInterval(代碼,交互時間);
參數說明:
1. 代碼:要調用的函數或要執行的代碼串。
2. 交互時間:周期性執行或調用表達式之間的時間間隔,以毫秒計(1s=1000ms)。
返回值:
一個可以傳遞給 clearInterval() 從而取消對"代碼"的周期性執行的值。
調用函數格式(假設有一個clock()函數):
setInterval("clock()",1000)
或
setInterval(clock,1000)
57、計時器setTimeout()
setTimeout()計時器,在載入后延遲指定時間后,去執行一次表達式,僅執行一次。
語法:
setTimeout(代碼,延遲時間);
參數說明:
1. 要調用的函數或要執行的代碼串。
2. 延時時間:在執行代碼前需等待的時間,以毫秒為單位(1s=1000ms)。
當我們打開網頁3秒后,在彈出一個提示框,代碼如下:
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
setTimeout("alert('Hello!')", 3000 );
</script>
</head>
<body>
</body>
</html>
當按鈕start被點擊時,setTimeout()調用函數
58、取消計時器clearTimeout()
setTimeout()和clearTimeout()一起使用,停止計時器。
語法:
clearTimeout(id_of_setTimeout)
參數說明:
id_of_setTimeout:由 setTimeout() 返回的 ID 值。該值標識要取消的延遲執行代碼塊。
59、History 對象
history對象記錄了用戶曾經瀏覽過的頁面(URL),並可以實現瀏覽器前進與后退相似導航的功能。
注意:從窗口被打開的那一刻開始記錄,每個瀏覽器窗口、每個標簽頁乃至每個框架,都有自己的history對象與特定的window對象關聯。
語法:
window.history.[屬性|方法]
注意:window可以省略。
History 對象屬性
History 對象方法
使用length屬性,當前窗口的瀏覽歷史總長度,代碼如下:
<script type="text/javascript">
var HL = window.history.length;
document.write(HL);
</script>
60、返回瀏覽歷史中的其他頁面
61、Location對象
62、Navigator對象
Navigator 對象包含有關瀏覽器的信息,通常用於檢測瀏覽器與操作系統的版本。
對象屬性:
查看瀏覽器的名稱和版本,代碼如下:
<script type="text/javascript">
var browser=navigator.appName;
var b_version=navigator.appVersion;
document.write("Browser name"+browser);
document.write("<br>");
document.write("Browser version"+b_version);
</script>
63、userAgent
返回用戶代理頭的字符串表示(就是包括瀏覽器版本信息等的字符串)
語法
navigator.userAgent
幾種瀏覽的user_agent.,像360的兼容模式用的是IE、極速模式用的是chrom的內核。
使用userAgent判斷使用的是什么瀏覽器(假設使用的是IE8瀏覽器),代碼如下:
function validB(){
var u_agent = navigator.userAgent;
var B_name="Failed to identify the browser";
if(u_agent.indexOf("Firefox")>-1){
B_name="Firefox";
}else if(u_agent.indexOf("Chrome")>-1){
B_name="Chrome";
}else if(u_agent.indexOf("MSIE")>-1&&u_agent.indexOf("Trident")>-1){
B_name="IE(8-10)";
}
document.write("B_name:"+B_name+"<br>");
document.write("u_agent:"+u_agent+"<br>");
}
64、screen對象
screen對象用於獲取用戶的屏幕信息。
語法:
window.screen.屬性
對象屬性:
65、屏幕分辨率的高和寬
window.screen 對象包含有關用戶屏幕的信息。
1. screen.height 返回屏幕分辨率的高
2. screen.width 返回屏幕分辨率的寬
注意:
1.單位以像素計。
2. window.screen 對象在編寫時可以不使用 window 這個前綴。
我們來獲取屏幕的高和寬,代碼如下:
<script type="text/javascript">
document.write( "屏幕寬度:"+screen.width+"px<br />" );
document.write( "屏幕高度:"+screen.height+"px<br />" );
</script>
66、屏幕可用高和寬度
1. screen.availWidth 屬性返回訪問者屏幕的寬度,以像素計,減去界面特性,比如任務欄。
2. screen.availHeight 屬性返回訪問者屏幕的高度,以像素計,減去界面特性,比如任務欄。
注意:
不同系統的任務欄默認高度不一樣,及任務欄的位置可在屏幕上下左右任何位置,所以有可能可用寬度和高度不一樣。
我們來獲取屏幕的可用高和寬度,代碼如下:
<script type="text/javascript">
document.write("可用寬度:" + screen.availWidth);
document.write("可用高度:" + screen.availHeight);
</script>
注意:根據屏幕的不同顯示值不同。
<a href="javascript:goback();">返回</a>
href中:通過javascript:加方法名,可以形成后面超鏈接顯示文本,不要忘了冒號
innerHTML向所在標簽進行文本替換
67、getElementsByName()方法
返回帶有指定名稱的節點對象的集合。
語法:
document.getElementsByName(name)
與getElementById() 方法不同的是,通過元素的 name 屬性查詢元素,而不是通過 id 屬性。
注意:
1. 因為文檔中的 name 屬性可能不唯一,所有 getElementsByName() 方法返回的是元素的數組,而不是一個元素。
2. 和數組類似也有length屬性,可以和訪問數組一樣的方法來訪問,從0開始。
68、getElementsByTagName()方法
返回帶有指定標簽名的節點對象的集合。返回元素的順序是它們在文檔中的順序。
語法:
document.getElementsByTagName(Tagname)
說明:
1. Tagname是標簽的名稱,如p、a、img等標簽名。
2. 和數組類似也有length屬性,可以和訪問數組一樣的方法來訪問,所以從0開始。
69、getElementsByTagName()方法
返回帶有指定標簽名的節點對象的集合。返回元素的順序是它們在文檔中的順序。
語法:
document.getElementsByTagName(Tagname)
說明:
1. Tagname是標簽的名稱,如p、a、img等標簽名。
2. 和數組類似也有length屬性,可以和訪問數組一樣的方法來訪問,所以從0開始。
70、區別getElementByID,getElementsByName,getElementsByTagName
以人來舉例說明,人有能標識身份的身份證,有姓名,有類別(大人、小孩、老人)等。
1. ID 是一個人的身份證號碼,是唯一的。所以通過getElementById獲取的是指定的一個人。
2. Name 是他的名字,可以重復。所以通過getElementsByName獲取名字相同的人集合。
3. TagName可看似某類,getElementsByTagName獲取相同類的人集合。如獲取小孩這類人,getElementsByTagName("小孩")。
把上面的例子轉換到HTML中,如下:
<input type="checkbox" name="hobby" id="hobby1"> 音樂
input標簽就像人的類別。
name屬性就像人的姓名。
id屬性就像人的身份證。
方法總結如下:
注意:方法區分大小寫
71、getAttribute()方法
通過元素節點的屬性名稱獲取屬性的值。
語法:
elementNode.getAttribute(name)
說明:
1. elementNode:使用getElementById()、getElementsByTagName()等方法,獲取到的元素節點。
2. name:要想查詢的元素節點的屬性名字
72、setAttribute()方法
setAttribute() 方法增加一個指定名稱和值的新屬性,或者把一個現有的屬性設定為指定的值。
語法:
elementNode.setAttribute(name,value)
說明:
1.name: 要設置的屬性名。
2.value: 要設置的屬性值。
注意:
1.把指定的屬性設置為指定的值。如果不存在具有指定名稱的屬性,該方法將創建一個新屬性。
2.類似於getAttribute()方法,setAttribute()方法只能通過元素節點對象調用的函數。
73、節點屬性
在文檔對象模型 (DOM) 中,每個節點都是一個對象。DOM 節點有三個重要的屬性 :
1. nodeName : 節點的名稱
2. nodeValue :節點的值
3. nodeType :節點的類型
一、nodeName 屬性: 節點的名稱,是只讀的。
1. 元素節點的 nodeName 與標簽名相同
2. 屬性節點的 nodeName 是屬性的名稱
3. 文本節點的 nodeName 永遠是 #text
4. 文檔節點的 nodeName 永遠是 #document
二、nodeValue 屬性:節點的值
1. 元素節點的 nodeValue 是 undefined 或 null
2. 文本節點的 nodeValue 是文本自身
3. 屬性節點的 nodeValue 是屬性的值
三、nodeType 屬性: 節點的類型,是只讀的。以下常用的幾種結點類型:
元素類型 節點類型
元素 1
屬性 2
文本 3
注釋 8
文檔 9
74、訪問子節點childNodes
訪問選定元素節點下的所有子節點的列表,返回的值可以看作是一個數組,他具有length屬性。
語法:
elementNode.childNodes
注意:
如果選定的節點沒有子節點,則該屬性返回不包含節點的 NodeList。
75、訪問子節點的第一和最后項
一、firstChild 屬性返回‘childNodes’數組的第一個子節點。如果選定的節點沒有子節點,則該屬性返回 NULL。
語法:
node.firstChild
說明:與elementNode.childNodes[0]是同樣的效果。
二、 lastChild 屬性返回‘childNodes’數組的最后一個子節點。如果選定的節點沒有子節點,則該屬性返回 NULL。
語法:
node.lastChild
說明:與elementNode.childNodes[elementNode.childNodes.length-1]是同樣的效果。
注意: 上一節中,我們知道Internet Explorer 會忽略節點之間生成的空白文本節點,而其它瀏覽器不會。我們可以通過檢測節點類型,過濾子節點。 (以后章節講解)
76、訪問父節點parentNode
獲取指定節點的父節點
語法:
elementNode.parentNode
注意:父節點只能有一個。
看看下面的例子,獲取 P 節點的父節點,代碼如下:
<div id="text">
<p id="con"> parentNode 獲取指點節點的父節點</p>
</div>
<script type="text/javascript">
var mynode= document.getElementById("con");
document.write(mynode.parentNode.nodeName);
</script>
運行結果:
parentNode 獲取指點節點的父節點
DIV
訪問祖節點:
elementNode.parentNode.parentNode
看看下面的代碼:
<div id="text">
<p>
parentNode
<span id="con"> 獲取指點節點的父節點</span>
</p>
</div>
<script type="text/javascript">
var mynode= document.getElementById("con");
document.write(mynode.parentNode.parentNode.nodeName);
</script>
運行結果:
parentNode獲取指點節點的父節點
DIV
注意: 瀏覽器兼容問題,chrome、firefox等瀏覽器標簽之間的空白也算是一個文本節點。
77、訪問兄弟節點
1. nextSibling 屬性可返回某個節點之后緊跟的節點(處於同一樹層級中)。
語法:
nodeObject.nextSibling
說明:如果無此節點,則該屬性返回 null。
2. previousSibling 屬性可返回某個節點之前緊跟的節點(處於同一樹層級中)。
語法:
nodeObject.previousSibling
說明:如果無此節點,則該屬性返回 null。
注意: 兩個屬性獲取的是節點。Internet Explorer 會忽略節點間生成的空白文本節點(例如,換行符號),而其它瀏覽器不會忽略。
78、插入節點appendChild()
在指定節點的最后一個子節點列表之后添加一個新的子節點。
語法:
appendChild(newnode)
參數:
newnode:指定追加的節點。
我們來看看,div標簽內創建一個新的 P 標簽,代碼如下:
79、插入節點insertBefore()
insertBefore() 方法可在已有的子節點前插入一個新的子節點。
語法:
insertBefore(newnode,node);
參數:
newnode: 要插入的新節點。
node: 指定此節點前插入節點。
我們在來看看下面代碼,在指定節點前插入節點。
80、刪除節點removeChild()
81、替換元素節點replaceChild()
82、創建元素節點createElement
createElement()方法可創建元素節點。此方法可返回一個 Element 對象。
語法:
document.createElement(tagName)
參數:
tagName:字符串值,這個字符串用來指明創建元素的類型。
注意:要與appendChild() 或 insertBefore()方法聯合使用,將元素顯示在頁面中。
83、創建文本節點createTextNode
createTextNode() 方法創建新的文本節點,返回新創建的 Text 節點。
語法:
document.createTextNode(data)
參數:
data : 字符串值,可規定此節點的文本。
我們來創建一個<div>元素並向其中添加一條消息,代碼如下:
84、瀏覽器窗口可視區域大小
獲得瀏覽器窗口的尺寸(瀏覽器的視口,不包括工具欄和滾動條)的方法:
一、對於IE9+、Chrome、Firefox、Opera 以及 Safari:
• window.innerHeight - 瀏覽器窗口的內部高度
• window.innerWidth - 瀏覽器窗口的內部寬度
二、對於 Internet Explorer 8、7、6、5:
• document.documentElement.clientHeight表示HTML文檔所在窗口的當前高度。
• document.documentElement.clientWidth表示HTML文檔所在窗口的當前寬度。
或者
Document對象的body屬性對應HTML文檔的<body>標簽
• document.body.clientHeight
• document.body.clientWidth
在不同瀏覽器都實用的 JavaScript 方案:
var w= document.documentElement.clientWidth
|| document.body.clientWidth;
var h= document.documentElement.clientHeight
|| document.body.clientHeight;
85、網頁尺寸scrollHeight
scrollHeight和scrollWidth,獲取網頁內容高度和寬度。
一、針對IE、Opera:
scrollHeight 是網頁內容實際高度,可以小於 clientHeight。
二、針對NS、FF:
scrollHeight 是網頁內容高度,不過最小值是 clientHeight。也就是說網頁內容實際高度小於 clientHeight 時,scrollHeight 返回 clientHeight 。
三、瀏覽器兼容性
var w=document.documentElement.scrollWidth
|| document.body.scrollWidth;
var h=document.documentElement.scrollHeight
|| document.body.scrollHeight;
注意:區分大小寫
scrollHeight和scrollWidth還可獲取Dom元素中內容實際占用的高度和寬度。
86、網頁尺寸offsetHeight
offsetHeight和offsetWidth,獲取網頁內容高度和寬度(包括滾動條等邊線,會隨窗口的顯示大小改變)。
一、值
offsetHeight = clientHeight + 滾動條 + 邊框。
二、瀏覽器兼容性
var w= document.documentElement.offsetWidth
|| document.body.offsetWidth;
var h= document.documentElement.offsetHeight
|| document.body.offsetHeight;



























