js不能算是一門程式語言?

2020-08-12 18:51:13

轉載自品略圖書館 http://www.pinlue.com/article/2020/07/0704/5110983500959.html

 

剛開始接觸JavaScript的時候,心中就一直有一個疑問:

後臺程式語言之間互相爭論不斷,爲何一提到前端基本都會想到JS?

因爲纔剛開始學js,所以很多話不敢說的太絕對,就加上了「基本,大概,可能」這樣的形容詞。

畢竟話說的太絕對容易被吐槽,誰知道竟然還是被吐槽了:

 

納尼?js連程式語言都不算了?

我只是儘可能不把話說的太絕對,可能js並不是前端公認的語言,但沒想到連程式語言都不算了?

這是我萬萬沒有想到的。

在這一刻我的內心產生了動搖,我突然想到了那張程式語言排行榜的圖片。

前段時間c語言排名超過Java,導致經常性地能看到,我明明在這張表中看到了JavaScript。

莫非這不能算是程式語言排行榜?

於是我又網上查了下,查詢到的結果都是說js是一門程式語言。

現在結果就顯而易見了,說js不是程式語言就好比說前端不是程式設計師一樣,帶有很濃的個人主義色彩,當個笑話即可。

嘛,不管如何,js還是很重要的,話不多說,繼續學習:今天是劉小愛自學Java的第83天:

 

昨天學習了BOM程式設計,今天學DOM程式設計。

DOM,全稱Document Object Model,即文件物件模型,具體什麼意思呢?

還是一樣的學習方法,先學習其對應的知識點,再理解其概念。

一、DOM程式設計

1根據標籤名獲取元素

 

①頁面載入事件

因爲script標籤在body標籤前面,而頁面載入又是從上到下的。

如果在script標籤想獲取body標籤中的內容,需要先觸發頁面載入事件。

②點選事件

要達到的效果爲,點選按鈕會給a便籤新增相應的地址。

這裏使用的的匿名函數註冊方式觸發點選事件。

③getElementsByTagName()

根據標籤名獲取元素,因爲頁面中a標籤有3個,所以使用該方法獲取的是一個數組。

再將陣列遍歷,逐一給href屬性賦值。

注意:如果相同標籤的數量有多個,其返回值爲陣列,一開始完全就給忽視了。

程式碼寫完,做一個測試:

 

點一下按鈕,觸發點選上事件,a標籤新增了一個超鏈接,顏色從黑變成了紫,

再點下,會跳轉超鏈接對應的頁面

2根據name獲取元素

標籤基本都會有一個name屬性,根據name屬性獲取對應的元素:

 

有三個div標籤,但是name爲"myDiv"的只有兩個,我們只需要對應name的標籤。

所以不能getElementsByTagName()方法,而是getElementsByName();

這樣的話第三個div標籤就不會對它有影響,

做一個測試:

 

可以通過name屬性給對應的標籤賦值。

3根據類名獲取元素

getElementsByClassName(),這個方法的思路就跟name是一樣的。

只不過一個是標籤裡的name屬性,一個是標籤裡的class屬性。

二、如何理解DOM?

上述的3中方法便是對DOM程式設計的一個初步說明,當然肯定不會就只有這3種。

但這幾種比較常見,並且很具有代表性。

先看一個HTML,其具體內容不用細看:

 

上述程式碼也就是一個文件,DOM模型是使用一個DOM樹來表示文件的。

DOM樹的根節點爲html標籤。

html標籤有兩個子標籤(子節點):head標籤,body標籤。

body標籤也有兩個子標籤(子節點):a標籤,table標籤。

子節點又有子節點,這樣就形成了一個樹形結構。

其中每個節點都包含着物件(objects)。

樹形結構圖如下:

 

當然圖我並沒有畫完全,但大致就是這麼一個樹形的結構。

並且我舉這個例子中文件內容也比較簡單,一共也就那麼幾行程式碼,實際情況肯定要複雜的多。

而DOM程式設計就是可以用特定方式操作這個樹,從而可以改變文件的結構、樣式或者內容。

其中就包括最先說明的那三種方法:根據標籤名,根據id名,根據類名……等等。

三、js操作CSS

CSS可以設定標籤的樣式,是怎麼操作的?

 

①CSS設定樣式

這裏使用的是id選擇器,可以設定對應id的標籤樣式。

顏色color:紅。

字型font-family:微軟雅黑。

字型大小font-size:50px。

除了這種設定標籤的樣式外,現在還可以通過js程式碼去動態修改標籤的樣式。

程式碼編寫如下:

 

②js設定樣式

根據id獲取對應的元素。

在html中每一個標籤都會有一個屬性叫style,所以設定其style即可。

值得注意的是:fontFamily相當於CSS中的font-family,採用的是小駝峯命名規則。

其中如果用css和js同時操作同一標籤,會以js設定的爲主。

這也好理解,css相當於給標籤格式初始化,而js就相當於修改標籤格式。

當然這還不能看出js的使用特殊之處,我們再看一個案例:

 

①CSS設定格式

CSS根據類選擇器設定樣式,類爲myClass。

但是要注意,HTML中本身並沒有myClass類的標籤。

②js操作CSS

js厲害的地方在於它可以設定和修改標籤的類名。根據需求,js可以讓同一標籤:

設定類名爲a時,對應一種CSS樣式。

設定類名爲b時,又對應另一種CSS樣式

從而達到同一標籤樣式可以根據需求不停地切換。