僅為個(gè)人學(xué)習(xí)筆記,復(fù)習(xí)用
一.語法
1.插入javascript
<script type="text/javascript">
document.write("開啟JS之旅!");
</script>
2. 引用JS外部文件
JavaScript代碼只能寫在HTML文件中嗎?當(dāng)然不是,我們可以把HTML文件和JS代碼分開,并單獨(dú)創(chuàng)建一個(gè)JavaScript文件(簡(jiǎn)稱JS文件),其文件后綴通常為.js,然后將JS代碼直接寫在JS文件中。
注意:在JS文件中,不需要<script>標(biāo)簽,直接編寫JavaScript代碼就可以了。
JS文件不能直接運(yùn)行,需嵌入到HTML文件中執(zhí)行,我們需在HTML中添加如下代碼,就可將JS文件嵌入HTML文件中。
<script src="script.js"></script>
index.html
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>引用JS文件</title>
<script src="script.js"></script>
</head>
<body>
</body>
</html>
script.js
document.write("引用JS文件!");
3. JS在頁面中的位置
我們可以將JavaScript代碼放在html文件中任何位置,但是我們一般放在網(wǎng)頁的head或者body部分。
放在<head>部分
最常用的方式是在頁面中head部分放置<script>元素,瀏覽器解析head部分就會(huì)執(zhí)行這個(gè)代碼,然后才解析頁面的其余部分。
放在<body>部分
JavaScript代碼在網(wǎng)頁讀取到該語句的時(shí)候就會(huì)執(zhí)行。

注意: javascript作為一種腳本語言可以放在html頁面中任何位置,但是瀏覽器解釋html時(shí)是按先后順序的,所以前面的script就先被執(zhí)行。比如進(jìn)行頁面顯示初始化的js必須放在head里面,因?yàn)槌跏蓟家筇崆斑M(jìn)行(如給頁面body設(shè)置css等);而如果是通過事件調(diào)用執(zhí)行的function那么對(duì)位置沒什么要求的。
4. 格式
每一句JavaScript代碼格式: 語句;
一行的結(jié)束就被認(rèn)定為語句的結(jié)束,通常在結(jié)尾加上一個(gè)分號(hào)";"來表示語句的結(jié)束。
5. 注釋
單行注釋,在注釋內(nèi)容前加符號(hào) “//”。
多行注釋以"/"開始,以"/"結(jié)束。
6. 變量
定義變量使用關(guān)鍵字var,語法如下:
var 變量名
變量名可以任意取名,但要遵循命名規(guī)則:
- 變量必須使用字母、下劃線(_)或者美元符($)開始。
- 然后可以使用任意多個(gè)英文字母、數(shù)字、下劃線(_)或者美元符($)組成。
- 不能使用JavaScript關(guān)鍵詞與JavaScript保留字。
變量要先聲明再賦值,如下:
var mychar;
mychar="javascript";
var mynum = 6;
變量可以重復(fù)賦值,如下:
var mychar;
mychar="javascript";
mychar="hello";
注意:
- 在JS中區(qū)分大小寫,如變量mychar與myChar是不一樣的,表示是兩個(gè)變量。
- 變量雖然也可以不聲明,直接使用,但不規(guī)范,需要先聲明,后使用。
7. 判斷語句(if...else)
假設(shè)我們通過年齡來判斷是否為成年人,如年齡大于等于18歲,是成年人,否則不是成年人。代碼表示如下:
<script type="text/javascript">
var myage = 18;
if(myage>=18) //myage>=18是判斷條件
{ document.write("你是成年人。");}
else //否則年齡小于18
{ document.write("未滿18歲,你不是成年人。");}
</script>
8. 函數(shù)
function 函數(shù)名()
{
函數(shù)代碼;
}
說明:
- function定義函數(shù)的關(guān)鍵字。
- "函數(shù)名"你為函數(shù)取的名字。
- "函數(shù)代碼"替換為完成特定功能的代碼。

二.常用互動(dòng)方法
1. 輸出內(nèi)容(document.write)
document.write() 可用于直接向 HTML 輸出流寫內(nèi)容。簡(jiǎn)單的說就是直接在網(wǎng)頁中輸出內(nèi)容。
第一種:輸出內(nèi)容用""括起,直接輸出""號(hào)內(nèi)的內(nèi)容。
<script type="text/javascript">
document.write("I love JavaScript!"); //內(nèi)容用""括起來,""里的內(nèi)容直接輸出。
</script>
第二種:通過變量,輸出內(nèi)容
<script type="text/javascript">
var mystr="hello world!";
document.write(mystr); //直接寫變量名,輸出變量存儲(chǔ)的內(nèi)容。
</script>
第三種:輸出多項(xiàng)內(nèi)容,內(nèi)容之間用+號(hào)連接。
<script type="text/javascript">
var mystr="hello";
document.write(mystr+"I love JavaScript"); //多項(xiàng)內(nèi)容之間用+號(hào)連接
</script>
第四種:輸出HTML標(biāo)簽,并起作用,標(biāo)簽使用""括起來。
<script type="text/javascript">
var mystr="hello";
document.write(mystr+"<br>");//輸出hello后,輸出一個(gè)換行符
document.write("JavaScript");
</script>
2. 警告(alert 消息對(duì)話框)
我們?cè)谠L問網(wǎng)站的時(shí)候,有時(shí)會(huì)突然彈出一個(gè)小窗口,上面寫著一段提示信息文字。如果你不點(diǎn)擊“確定”,就不能對(duì)網(wǎng)頁做任何操作,這個(gè)小窗口就是使用alert實(shí)現(xiàn)的。
語法:
alert(字符串或變量);
看下面的代碼:
<script type="text/javascript">
var mynum = 30;
alert("hello!");
alert(mynum);
</script>
結(jié)果:按順序彈出消息框
注意:
- 在點(diǎn)擊對(duì)話框"確定"按鈕前,不能進(jìn)行任何其它操作。
- 消息對(duì)話框通??梢杂糜谡{(diào)試程序。
- alert輸出內(nèi)容,可以是字符串或變量,與document.write 相似。
- alert彈出消息對(duì)話框(包含一個(gè)確定按鈕)。
3. 確認(rèn)(confirm 消息對(duì)話框)
confirm 消息對(duì)話框通常用于允許用戶做選擇的動(dòng)作,如:“你對(duì)嗎?”等。彈出對(duì)話框(包括一個(gè)確定按鈕和一個(gè)取消按鈕)。
語法:
confirm(str);
參數(shù)說明:
str:在消息對(duì)話框中要顯示的文本
返回值: Boolean值
返回值:
當(dāng)用戶點(diǎn)擊"確定"按鈕時(shí),返回true
當(dāng)用戶點(diǎn)擊"取消"按鈕時(shí),返回false
注: 通過返回值可以判斷用戶點(diǎn)擊了什么按鈕
看下面的代碼:
<script type="text/javascript">
var mymessage=confirm("你喜歡JavaScript嗎?");
if(mymessage==true)
{ document.write("很好,加油!"); }
else
{ document.write("JS功能強(qiáng)大,要學(xué)習(xí)噢!"); }
</script>

注: 消息對(duì)話框是排它的,即用戶在點(diǎn)擊對(duì)話框按鈕前,不能進(jìn)行任何其它操作。
4. 提問(prompt 消息對(duì)話框)
prompt彈出消息對(duì)話框,通常用于詢問一些需要與用戶交互的信息。彈出消息對(duì)話框(包含一個(gè)確定按鈕、取消按鈕與一個(gè)文本輸入框)。
語法:
prompt(str1, str2);
參數(shù)說明:
str1: 要顯示在消息對(duì)話框中的文本,不可修改
str2:文本框中的內(nèi)容,可以修改
返回值:
- 點(diǎn)擊確定按鈕,文本框中的內(nèi)容將作為函數(shù)返回值
- 點(diǎn)擊取消按鈕,將返回null
看看下面代碼:
var myname=prompt("請(qǐng)輸入你的姓名:");
if(myname!=null)
{ alert("你好"+myname); }
else
{ alert("你好 my friend."); }
結(jié)果:

注:在用戶點(diǎn)擊對(duì)話框的按鈕前,不能進(jìn)行任何其它操作。
5. 打開新窗口(window.open)
open() 方法可以查找一個(gè)已經(jīng)存在或者新建的瀏覽器窗口。
語法:
window.open([URL], [窗口名稱], [參數(shù)字符串])
參數(shù)說明:
URL:可選參數(shù),在窗口中要顯示網(wǎng)頁的網(wǎng)址或路徑。如果省略這個(gè)參數(shù),或者它的值是空字符串,那么窗口就不顯示任何文檔。
窗口名稱:可選參數(shù),被打開窗口的名稱。
- 該名稱由字母、數(shù)字和下劃線字符組成。
- "_top"、"_blank"、"_self"具有特殊意義的名稱。
_blank:在新窗口顯示目標(biāo)網(wǎng)頁
_self:在當(dāng)前窗口顯示目標(biāo)網(wǎng)頁
_top:框架網(wǎng)頁中在上部窗口中顯示目標(biāo)網(wǎng)頁 - 相同 name 的窗口只能創(chuàng)建一個(gè),要想創(chuàng)建多個(gè)窗口則 name 不能相同。
- name 不能包含有空格。
參數(shù)字符串:可選參數(shù),設(shè)置窗口參數(shù),各參數(shù)用逗號(hào)隔開。
參數(shù)表
例如:打開http://www.imooc.com網(wǎng)站,大小為300px * 200px,無菜單,無工具欄,無狀態(tài)欄,有滾動(dòng)條窗口:
<script type="text/javascript">
window.open('http://www.imooc.com','_blank','width=300,height=200,menubar=no,toolbar=no, status=no,scrollbars=yes')
</script>
注意:運(yùn)行結(jié)果考慮瀏覽器兼容問題。
6. 關(guān)閉窗口(window.close)
close()關(guān)閉窗口
用法:
window.close(); //關(guān)閉本窗口
或
<窗口對(duì)象>.close(); //關(guān)閉指定的窗口
例如:關(guān)閉新建的窗口。
<script type="text/javascript">
var mywin=window.open('http://www.imooc.com'); //將新打的窗口對(duì)象,存儲(chǔ)在變量mywin中
mywin.close();
</script>
注意:上面代碼在打開新窗口的同時(shí),關(guān)閉該窗口,看不到被打開的窗口。
三. DOM操作
1. 定義
文檔對(duì)象模型DOM(Document Object Model)定義訪問和處理HTML文檔的標(biāo)準(zhǔn)方法。DOM 將HTML文檔呈現(xiàn)為帶有元素、屬性和文本的樹結(jié)構(gòu)(節(jié)點(diǎn)樹)。
先來看看下面代碼:

將HTML代碼分解為DOM節(jié)點(diǎn)層次圖:

HTML文檔可以說由節(jié)點(diǎn)構(gòu)成的集合,三種常見的DOM節(jié)點(diǎn):
-
元素節(jié)點(diǎn):上圖中<html>、<body>、<p>等都是元素節(jié)點(diǎn),即標(biāo)簽。 -
文本節(jié)點(diǎn):向用戶展示的內(nèi)容,如<li>...</li>中的JavaScript、DOM、CSS等文本。 -
屬性節(jié)點(diǎn):元素屬性,如<a>標(biāo)簽的鏈接屬性。
看下面代碼:
<a >JavaScript DOM</a>

2. 通過ID獲取元素
學(xué)過HTML/CSS樣式,都知道,網(wǎng)頁由標(biāo)簽將信息組織起來,而標(biāo)簽的id屬性值是唯一的,就像是每人有一個(gè)身份證號(hào)一樣,只要通過身份證號(hào)就可以找到相對(duì)應(yīng)的人。那么在網(wǎng)頁中,我們通過id先找到標(biāo)簽,然后進(jìn)行操作。
語法:
document.getElementById("id")
看看下面代碼:



注:獲取的元素是一個(gè)對(duì)象,如想對(duì)元素進(jìn)行操作,我們要通過它的屬性或方法。
3. innerHTML 屬性
innerHTML 屬性用于獲取或替換 HTML 元素的內(nèi)容。
語法:
Object.innerHTML
注意:
- Object是獲取的元素對(duì)象,如通過document.getElementById("ID")獲取的元素。
-
注意書寫,innerHTML區(qū)分大小寫。
我們通過id="con"獲取<p> 元素,并將元素的內(nèi)容輸出和改變?cè)貎?nèi)容,代碼如下:
結(jié)果
4. 改變 HTML 樣式
HTML DOM 允許 JavaScript 改變 HTML 元素的樣式。如何改變 HTML 元素的樣式呢?
語法:
Object.style.property=new style;
注意:Object是獲取的元素對(duì)象,如通過document.getElementById("id")獲取的元素。

注意:該表只是一小部分CSS樣式屬性,其它樣式也可以通過該方法設(shè)置和修改。
看看下面的代碼:
改變 <p> 元素的樣式,將顏色改為紅色,字號(hào)改為20,背景顏色改為藍(lán):
<p id="pcon">Hello World!</p>
<script>
var mychar = document.getElementById("pcon");
mychar.style.color="red";
mychar.style.fontSize="20";
mychar.style.backgroundColor ="blue";
</script>
5. 顯示和隱藏(display屬性)
語法:
Object.style.display = value
注意:Object是獲取的元素對(duì)象,如通過document.getElementById("id")獲取的元素。


6. 控制類名(className 屬性)
className 屬性設(shè)置或返回元素的class 屬性。
語法:
object.className = classname
作用:
- 獲取元素的class 屬性
- 為網(wǎng)頁內(nèi)的某個(gè)元素指定一個(gè)css樣式來更改該元素的外觀
看看下面代碼,獲得 <p> 元素的 class 屬性和改變className:


7.清除樣式
removeAttribute("style"); 清除了使用"style"屬性設(shè)置的CSS樣式
removeAtrribute("className"); 清除用className設(shè)置的樣式
或者是:
removeAttribute("id"); 清除用id設(shè)置的樣式
8. 練習(xí)

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8" />
<title>javascript</title>
<style type="text/css">
body{font-size:12px;}
#txt{
height:400px;
width:600px;
border:#333 solid 1px;
padding:5px;}
p{
line-height:18px;
text-indent:2em;}
</style>
</head>
<body>
<h2 id="con">JavaScript課程</H2>
<div id="txt">
<h5>JavaScript為網(wǎng)頁添加動(dòng)態(tài)效果并實(shí)現(xiàn)與用戶交互的功能。</h5>
<p>1. JavaScript入門篇,讓不懂JS的你,快速了解JS。</p>
<p>2. JavaScript進(jìn)階篇,讓你掌握J(rèn)S的基礎(chǔ)語法、函數(shù)、數(shù)組、事件、內(nèi)置對(duì)象、BOM瀏覽器、DOM操作。</p>
<p>3. 學(xué)完以上兩門基礎(chǔ)課后,在深入學(xué)習(xí)JavaScript的變量作用域、事件、對(duì)象、運(yùn)動(dòng)、cookie、正則表達(dá)式、ajax等課程。</p>
</div>
<form>
<!--當(dāng)點(diǎn)擊相應(yīng)按鈕,執(zhí)行相應(yīng)操作,為按鈕添加相應(yīng)事件-->
<input type="button" value="改變顏色" onclick="changeColor()">
<input type="button" value="改變寬高" onclick="changeWH()">
<input type="button" value="隱藏內(nèi)容" onclick="hideContent()">
<input type="button" value="顯示內(nèi)容" onclick="displayContent()">
<input type="button" value="取消設(shè)置" onclick="cancel()">
</form>
<script type="text/javascript">
var obj = document.getElementById("txt");
//定義"改變顏色"的函數(shù)
function changeColor() {
obj.style.color = "red";
obj.style.backgroundColor = "green";
}
//定義"改變寬高"的函數(shù)
function changeWH() {
obj.style.width = "500px";
obj.style.height = "300px";
}
//定義"隱藏內(nèi)容"的函數(shù)
function hideContent() {
obj.style.display = "none";
}
//定義"顯示內(nèi)容"的函數(shù)
function displayContent() {
obj.style.display = "block";
}
//定義"取消設(shè)置"的函數(shù)
function cancel() {
var result = confirm("是否取消設(shè)置");
if(result==true){
obj.removeAttribute("style");
}
}
</script>
</body>
</html>



