JavaScript入門筆記

為方便閱讀,該內容需具備一定的HTML+CSS基礎。

為什么學習JavaScript

  • 一、為什么JavaScript非常值得我們學習?
    1. 所有主流瀏覽器都支持JavaScript
    2. 目前,全世界大部分網頁都使用JavaScript
    3. 它可以讓網頁呈現各種動態效果。
    4. 做為一個Web開發師,如果你想提供漂亮的網頁、令用戶滿意的上網體驗,JavaScript是必不可少的工具。
  • 二、易學性
    1. 學習環境無外不在,只要有文本編輯器,就能編寫JavaScript程序。
    2. 我們可以用簡單命令,完成一些基本操作。
  • 三、從哪開始學習呢?
    • 學習JavaScript的起點就是處理網頁,所以我們先學習基礎語法和如何使用DOM進行簡單操作。

如何插入JS

  • 使用<script>標簽在HTML網頁中插入JavaScript代碼。注意, <script>標簽要成對出現,并把JavaScript代碼寫在<script></script>之間。
  • <script type="text/javascript">表示在<script></script>之間的是文本類型(text),javascript是為了告訴瀏覽器里面的文本是屬于JavaScript語言。
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb18030">
        <title>插入js代碼</title>
        <script type="text/javascript">
            document.write("開啟JS之旅!");
        </script>
    </head>
    <body>
    </body>
</html>

引用JS外部文件

  • 我們可以把HTML文件和JS代碼分開,并單獨創建一個JavaScript文件(簡稱JS文件),其文件后綴通常為.js,然后將JS代碼直接寫在JS文件中。
52898b400001d04005500266.jpg.png

注意:在JS文件中,不需要<script>標簽,直接編寫JavaScript代碼就可以了。

  • JS文件不能直接運行,需嵌入到HTML文件中執行,我們需在HTML中添加如下代碼,就可將JS文件嵌入HTML文件中。
    • <script src="script.js"></script>
52898b6900018aeb05540284.jpg.png

JS在頁面中的位置

  • 可以將JavaScript代碼放在html文件中任何位置,但是我們一般放在網頁的head或者body部分。
  • 放在<head>部分
    • 最常用的方式是在頁面中head部分放置<script>元素,瀏覽器解析head部分就會執行這個代碼,然后才解析頁面的其余部分。
  • 放在<body>部分
    • JavaScript代碼在網頁讀取到該語句的時候就會執行。
  • 注意: javascript作為一種腳本語言可以放在html頁面中任何位置,但是瀏覽器解釋html時是按先后順序的,所以前面的script就先被執行。
    • 比如:進行頁面顯示初始化的js必須放在head里面,因為初始化都要求提前進行(如給頁面body設置css等);而如果是通過事件調用執行的function那么對位置沒什么要求的。

認識語句和符號

<script type="text/javascript">
   alert("hello!");
</script>
  • 例子中的alert("hello!");就是一個JavaScript語句。
  • 一行的結束就被認定為語句的結束,通常在結尾加上一個分號;來表示語句的結束。
  • 注意:
    1. ;分號要在英文狀態下輸入,同樣,JS中的代碼和符號都要在英文狀態下輸入。
    2. 雖然分號;也可以不寫,但我們要養成編程的好習慣,記得在語句末尾寫上分號。

注釋

  • 單行注釋,在注釋內容前加符號 //
  • 多行注釋以/*開始,以*/結束。

什么是變量

  • 從編程角度講,變量是用于存儲某種/某些數值的存儲器。
  • 定義變量使用關鍵字var,語法如下:
    • var 變量名
  • 變量名可以任意取名,但要遵循命名規則:
    • 1.變量必須使用字母、下劃線_或者美元符$開始。
    • 2.然后可以使用任意多個英文字母、數字、下劃線_或者美元符$組成。
    • 3.不能使用JavaScript關鍵詞與JavaScript保留字。
  • 變量要先聲明再賦值
  • 變量可以重復賦值
  • 注意:
    1. JS區分大小寫.
    2. 變量雖然也可以不聲明,直接使用,但不規范,需要先聲明,后使用。

判斷語句(if...else

  • if...else語句是在指定的條件成立時執行代碼,在條件不成立時執行else后的代碼。
if(條件){ 
    條件成立時執行的代碼 
} else { 
    條件不成立時執行的代碼 
}

什么是函數

  • 函數是完成某個特定功能的一組語句。
function 函數名()
{
     函數代碼;
}
  • 說明:
    1. function定義函數的關鍵字。
    2. 函數名你為函數取的名字。
    3. 函數代碼替換為完成特定功能的代碼。
function add2(){
   var sum = 3 + 2;
   alert(sum);
}
  • 函數調用:
    • 函數定義好后,是不能自動執行的,所以需調用它,只需直接在需要的位置寫函數就 ok 了,
5419430400012de808370459.jpg

輸出內容document.write

  • document.write()可用于直接向 HTML 輸出流寫內容。簡單的說就是直接在網頁中輸出內容。
  • 第一種:輸出內容用""括起,直接輸出""號內的內容

<script type="text/javascript">
document.write("I love JavaScript!"); //內容用""括起來,""里的內容直接輸出。
</script>

* 第二種:通過變量,輸出內容

```js
<script type="text/javascript">

var mystr="hello world!";
document.write(mystr); //直接寫變量名,輸出變量存儲的內容。
</script>


* 第三種:輸出多項內容,內容之間用`+`號連接。

```js
<script type="text/javascript">

var mystr="hello";
document.write(mystr+"I love JavaScript"); //多項內容之間用+號連接
</script>


* 第四種:輸出`HTML`標簽,并起作用,標簽使用`""`括起來。

```js
<script type="text/javascript">

var mystr="hello";
document.write(mystr+"
");//輸出hello后,輸出一個換行符
document.write("JavaScript");
</script>

  • JS中如何輸出空格

在寫JS代碼的時候,大家可以會發現這樣現象:

document.write(" 1 2 3 ");
結果: 1 2 3

> 無論在輸出的內容中什么位置有多少個空格,顯示的結果好像只有一個空格。
> 
> 這是因為瀏覽器顯示機制,對手動敲入的空格,將連續多個空格顯示成1個空格。
> 
>* **解決方法:**
>* 1. 使用輸出html標簽 來解決
  
>```js
document.write("  "+"1"+"    "+"23");
結果:  1    23
    1. 使用CSS樣式來解決

document.write("<span style='white-space:pre;'>"+" 1 2 3 "+"</span>");
結果: 1 2 3

> 在輸出時添加`white-space:pre;`樣式屬性。這個樣式表示**空白會被瀏覽器保留**

###警告(alert 消息對話框)
* 我們在訪問網站的時候,有時會突然彈出一個小窗口,上面寫著一段提示信息文字。如果你不點擊“確定”,就不能對網頁做任何操作,這個小窗口就是使用`alert`實現的。
* `alert(字符串或變量); `
* **注意:**
    1. 在點擊對話框`確定`按鈕前,不能進行任何其它操作。
    2. 消息對話框通常可以用于調試程序。
    3. `alert`輸出內容,可以是字符串或變量,與`document.write`相似。


![52e362850001024d04840353.jpg](http://upload-images.jianshu.io/upload_images/2390274-1e9681f99d873539.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

###確認(confirm 消息對話框)
* `confirm`消息對話框通常用于允許用戶做選擇的動作
* `confirm(str);`
* 參數說明:
  * `str:`在消息對話框中要顯示的文本
  * 返回值: `Boolean值`
* 注: 用戶在點擊對話框按鈕前,不能進行任何其它操作。

```js
<script type="text/javascript">
    var mymessage=confirm("你喜歡JavaScript嗎?");
    if(mymessage==true)
    {   document.write("很好,加油!");   }
    else
    {  document.write("JS功能強大,要學習噢!");
    }
</script>
52e35bc60001f01a04230353.jpg

提問(prompt 消息對話框)

  • prompt彈出消息對話框,通常用于詢問一些需要與用戶交互的信息。
  • prompt(str1, str2);
  • 參數說明:
    • str1:要顯示在消息對話框中的文本,不可修改
    • str2:文本框中的內容,可以修改
  • 返回值:
    1. 點擊確定按鈕,文本框中的內容將作為函數返回值
    2. 點擊取消按鈕,將返回null
  • 注:在用戶點擊對話框的按鈕前,不能進行任何其它操作。
var myname=prompt("請輸入你的姓名:");
if(myname!=null)
  {   alert("你好"+myname); }
else
  {  alert("你好 my friend.");  }
52e360780001ede107090353.jpg

打開新窗口(window.open)

  • open()方法可以查找一個已經存在或者新建的瀏覽器窗口。
  • window.open([URL], [窗口名稱], [參數字符串])
  • 參數說明:
  • URL:可選參數,在窗口中要顯示網頁的網址或路徑。如果省略這個參數,或者它的值是空字符串,那么窗口就不顯示任何文檔。
  • 窗口名稱:可選參數,被打開窗口的名稱。
    1. 該名稱由字母、數字和下劃線字符組成。
    2. _top_blank_self具有特殊意義的名稱。
  `_blank:`在新窗口顯示目標網頁
 ` _self:`在當前窗口顯示目標網頁
  `_top:`框架網頁中在上部窗口中顯示目標網頁
    1. 相同 name 的窗口只能創建一個,要想創建多個窗口則 name 不能相同。
    1. name 不能包含有空格。
  • 參數字符串:可選參數,設置窗口參數,各參數用逗號隔開。
52e3677900013d6a05020261.jpg
<script type="text/javascript"> 
window.open('http://www.imooc.com','_blank','width=300,height=200,menubar=no,toolbar=no, status=no,scrollbars=yes')
</script>

關閉窗口(window.close)

  • close()關閉窗口
  • window.close(); //關閉本窗口
  • <窗口對象>.close(); //關閉指定的窗口
<script type="text/javascript">
   var mywin=window.open('http://www.imooc.com'); //將新打的窗口對象,存儲在變量mywin中
   mywin.close();
</script>

認識DOM

  • 文檔對象模型DOMDocument Object Model)定義訪問和處理HTML文檔的標準方法。DOMHTML文檔呈現為帶有元素、屬性和文本的樹結構(節點樹)。
  • 如下一段代碼:
52e4be610001c67307860420.jpg
  • HTML代碼分解為DOM節點層次圖:
52e4bd0f0001dd8d04830279.jpg
  • HTML文檔可以說由節點構成的集合,三種常見的DOM節點:
  1. 元素節點:上圖中<html><body><p>等都是元素節點,即標簽。
  2. 文本節點:向用戶展示的內容,如<li>...</li>中的JavaScriptDOMCSS等文本。
  3. 屬性節點:元素屬性,如<a>標簽的鏈接屬性
  • 看該代碼:<a >JavaScript DOM</a>
52e4bdb80001064c04480196.jpg

通過ID獲取元素

  • 學過HTML/CSS樣式,都知道,網頁由標簽將信息組織起來,而標簽的id屬性值是唯一的。那么在網頁中,我們通過id先找到標簽,然后進行操作。
  • document.getElementById(“id”)
52e4c5950001054207900423.jpg
52e4c6080001734c03800275.jpg
  • 因為代碼從上到下執行,所以為 null

  • 如果script代碼在內容后面,就打印[object HTMLParagraphElement]

注:獲取的元素是一個對象,如想對元素進行操作,我們要通過它的屬性或方法。

innerHTML 屬性

  • innerHTML 屬性用于獲取或替換 HTML 元素的內容。
  • Object.innerHTML
  • 注意:
    1. Object是獲取的元素對象,如通過document.getElementById("ID")獲取的元素。
    2. 注意書寫,innerHTML區分大小寫。
52e4cd080001f01507220418.jpg
52e4cb5c000187ce03740251.jpg

改變 HTML 樣式

  • HTML DOM 允許 JavaScript 改變 HTML 元素的樣式.
  • Object.style.property=new style;
  • 注意:Object是獲取的元素對象,如通過document.getElementById("id")獲取的元素。

52e4d4240001dd6c04850229.jpg

注意:該表只是一小部分CSS樣式屬性,其它樣式也可以通過該方法設置和修改。

  • 如下代碼:改變 <p> 元素的樣式,將顏色改為紅色,字號改為20,背景顏色改為藍:
<p id="pcon">Hello World!</p>
<script>
   var mychar = document.getElementById("pcon");
   mychar.style.color="red";
   mychar.style.fontSize="20px";
   mychar.style.backgroundColor ="blue";
</script>
52e4d6ae000177d203770253.jpg

顯示和隱藏(display屬性)

  • Object.style.display = value
  • Object是獲取的元素對象,如通過document.getElementById("id")獲取的元素。

value取值

52e4dba5000179da04110095.jpg
52e4dcf50001bead09310689.jpg

控制類名(className 屬性)

  • className 屬性設置或返回元素的class 屬性。
  • object.className = classname
  • 作用:
    1. 獲取元素的class屬性
    2. 為網頁內的某個元素指定一個css樣式來更改該元素的外觀
52e4e28c0001c97f07980838.jpg
52e4e711000135d903810270.jpg

補充

所有設置恢復原始值的寫法:object.removeAttribute('style')

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內容

  • 一、JS前言 (1)認識JS 也許你已經了解HTML標記(也稱為結構),知道了CSS樣式(也稱為表示),會使用HT...
    凜0_0閱讀 2,784評論 0 8
  • 第1章 認識JS JavaScript能做什么?1.增強頁面動態效果(如:下拉菜單、圖片輪播、信息滾動等)2.實現...
    mo默22閱讀 1,313評論 0 5
  • JS簡介 外部JavaScript中文件的文件擴展名為.js,如果使用外部文件,那么標簽需要設置它的src屬性為文...
    Grape_葡萄閱讀 946評論 1 6
  • 關于點擊按鈕取不到數據,并返回錯誤信息500.調試方法,將方法全部注釋,一個一個調試,并在方法內插入斷點;最終將錯...
    江江江123閱讀 257評論 0 0
  • 攝影 楊澤平 靈寶市東南一公里,有村名澗口。村民下地是農民,回家是市民。進城無奔波之苦,回村有別墅可居。巷道皆硬化...
    窗外白楊閱讀 426評論 2 4