javascript學(xué)習(xí)(五)- DOM

DOM

????當(dāng)網(wǎng)頁被加載時,瀏覽器會創(chuàng)建頁面的文檔對象模型(Document Object Model)顶考。通過 HTML DOM酱床,可訪問 JavaScript HTML 文檔的所有元素。

事件

????HTML DOM 使 JavaScript 有能力對 HTML 事件做出反應(yīng)独悴。比如當(dāng)用戶在 HTML 元素上點擊時。

HTML 事件的例子:

  • 當(dāng)用戶點擊鼠標(biāo)時
  • 當(dāng)網(wǎng)頁已加載時
  • 當(dāng)圖像已加載時
  • 當(dāng)鼠標(biāo)移動到元素上時
  • 當(dāng)輸入字段被改變時
  • 當(dāng)提交 HTML 表單時
  • 當(dāng)用戶觸發(fā)按鍵時

獲取(綁定)HTML元素:

????通常锣尉,通過 JavaScript刻炒,您需要操作 HTML 元素。
為了做到這件事情自沧,您必須首先找到該元素坟奥。有三種方法來做這件事:

  1. 通過 id 找到 HTML 元素
  2. 通過標(biāo)簽名找到 HTML 元素
  3. 通過類名找到 HTML 元素
  • 這里只是幾個常用的查詢方式,也可以通過CSS選擇器等進行查詢拇厢,更多內(nèi)容大家可以慢慢發(fā)掘
#通過標(biāo)簽名查找
document.getElementByTagName

#通過ID查找
document.getElementById

#通過class查找
document.getElementByTagName

函數(shù)綁定

????通過獲取到一個html節(jié)點后筏勒,通過一系列方式進行功能執(zhí)行,例如改變節(jié)點屬性或者文本內(nèi)容等等旺嬉,大多都是通過調(diào)用函數(shù)管行,一般有以下幾種方式

#直接綁定事件
div.onclick = fn
;

#通過指明函數(shù)
funtion fn() ={
...
} 

onload事件

????一般我們會把頁面內(nèi)直接添加的js代碼放在頁面最后,以保證頁面加載完成后能夠獲取到script里面調(diào)用的元素節(jié)點邪媳,如果放在body之前捐顷,可能scrpt里面需要的一些節(jié)點還沒有加載完成,就會拋出not define的錯誤雨效,但是我們可以通過onload函數(shù)迅涮,onload 事件會在頁面或圖像加載完成后立即發(fā)生。

<html>
<head>
<script type="text/javascript">
function load()
{
window.status="Page is loaded"
}
</script>
</head>

<body onload="load()">
</body>

</html>

DOM節(jié)點操作

  1. 創(chuàng)建節(jié)點——document.createElement("p");
  2. 刪除節(jié)點——ElementNode.removeChild("p")

????更多節(jié)點操作還有訪問子節(jié)點(children)徽龟,訪問兄弟節(jié)點叮姑,上一個、下一個節(jié)電等等,就不做贅述传透,原理都是一樣的耘沼,只是調(diào)用的餓屬性方法不同,詳情可參考菜鳥或者W3C-School

<div id="div1">
<p id="p1">這是一個段落朱盐。</p>
<p id="p2">這是另一個段落群嗤。</p>
</div>

<script>
var parent=document.getElementById("div1");
var child=document.getElementById("p1");
parent.removeChild(child);
</script>

????到這里,js基礎(chǔ)差不多就了解的差不多了兵琳,之后我們就通過案例來熟悉一下簡單的js操作

  1. 圖標(biāo)切換

????鼠標(biāo)移動到下排的每一個圖片時窍箍,上排大圖樣例進行改變蜈七,圖片大家可以自定義,放在images里面即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }

        #box{
            border: 1px solid #cccccc;

            width: 360px;
            height: 70px;

            padding-top: 360px;
            margin: 100px auto;

            background: url("images/01big.jpg") no-repeat;
        }

        ul{
            display: flex;
            justify-content: center;
            align-items: center;

            cursor: pointer;
        }
    </style>
</head>
<body>
   <div id="box">
       <ul>
           <li><img src="images/01.jpg" alt=""></li>
           <li><img src="images/02.jpg" alt=""></li>
           <li><img src="images/03.jpg" alt=""></li>
           <li><img src="images/04.jpg" alt=""></li>
           <li><img src="images/05.jpg" alt=""></li>
       </ul>
   </div>

<script>
    window.onload = function () {
        // 1. 獲取需要的標(biāo)簽
        var box = document.getElementById("box");
        var allLi = box.getElementsByTagName("li");

        // 2. 監(jiān)聽鼠標(biāo)的進入
        for(var i=0; i<allLi.length; i++){
            var sLi = allLi[i];
            sLi.index = i+1;
            sLi.onmouseover = function () {
                console.log(this.index);
                box.style.background = 'url("images/0'+ this.index +'big.jpg") no-repeat';
            }
        }
    }
</script>
</body>
</html>
  1. 二維碼的顯示與隱藏

????當(dāng)鼠標(biāo)移動到二維碼小圖時,會跳出大圖巨朦,并且小圖樣式進行改變盏触,移開大圖所在盒子時一切還原

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{
            margin: 0;
            padding: 0;
            list-style: none;
        }

        #e_coder{
            width: 50px;
            height: 50px;

            background: url("images/e_coder_normal.png") no-repeat;

            position: fixed;
            top: 40%;
            left: 0;

            cursor: pointer;
        }

        #e_app{
            position: absolute;
            left: 50px;
            top: -50px;

            /*隱藏*/
            display: none;
        }
    </style>
</head>
<body>
    <div id="e_coder">
        <div id="e_app">
            <img src="images/e_coder.jpg" alt="公眾號" width="150">
        </div>
    </div>

<script>
    window.onload = function () {
        // 1.獲取相應(yīng)的標(biāo)簽
        var e_coder = document.getElementById("e_coder");
        var e_app = document.getElementById("e_app");
        
        // 2.監(jiān)聽鼠標(biāo)進入
        e_coder.onmouseover = function () {
            // 2.1 改變背景圖片
            this.style.background = 'url("images/e_coder_selected.png") no-repeat';
            // 2.2 顯示二維碼
            e_app.style.display = "block";
        };

        // 3. 監(jiān)聽鼠標(biāo)的離開
        e_coder.onmouseout = function () {
            // 3.1 改變背景圖片
            this.style.background = 'url("images/e_coder_normal.png") no-repeat';
            // 3.2 隱藏二維碼
            e_app.style.display = "none";
        }
    }
</script>
</body>
</html>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末玩徊,一起剝皮案震驚了整個濱河市坑资,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌校仑,老刑警劉巖忠售,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異迄沫,居然都是意外死亡稻扬,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門羊瘩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泰佳,“玉大人,你說我怎么就攤上這事尘吗∈潘” “怎么了?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵睬捶,是天一觀的道長黔宛。 經(jīng)常有香客問我,道長擒贸,這世上最難降的妖魔是什么臀晃? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮介劫,結(jié)果婚禮上徽惋,老公的妹妹穿的比我還像新娘。我一直安慰自己座韵,他們只是感情好险绘,可當(dāng)我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般宦棺。 火紅的嫁衣襯著肌膚如雪瓣距。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天渺氧,我揣著相機與錄音旨涝,去河邊找鬼蹬屹。 笑死侣背,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的慨默。 我是一名探鬼主播贩耐,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼厦取!你這毒婦竟也來了潮太?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤虾攻,失蹤者是張志新(化名)和其女友劉穎铡买,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體霎箍,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡奇钞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了漂坏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片景埃。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖顶别,靈堂內(nèi)的尸體忽然破棺而出谷徙,到底是詐尸還是另有隱情,我是刑警寧澤驯绎,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布完慧,位于F島的核電站,受9級特大地震影響剩失,放射性物質(zhì)發(fā)生泄漏屈尼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一赴叹、第九天 我趴在偏房一處隱蔽的房頂上張望鸿染。 院中可真熱鬧,春花似錦乞巧、人聲如沸涨椒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蚕冬。三九已至免猾,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間囤热,已是汗流浹背猎提。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留旁蔼,地道東北人锨苏。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像棺聊,于是被迫代替她去往敵國和親伞租。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,576評論 2 349

推薦閱讀更多精彩內(nèi)容

  • ??JavaScript 與 HTML 之間的交互是通過事件實現(xiàn)的。 ??事件祟同,就是文檔或瀏覽器窗口中發(fā)生的一些特...
    霜天曉閱讀 3,477評論 1 11
  • ??DOM(文檔對象模型)是針對 HTML 和 XML 文檔的一個 API(應(yīng)用程序編程接口)晕城。 ??DOM 描繪...
    霜天曉閱讀 3,623評論 0 7
  • 之前通過深入學(xué)習(xí)DOM的相關(guān)知識泞坦,看了慕課網(wǎng)DOM探索之基礎(chǔ)詳解篇這個視頻(在最近看第三遍的時候,準(zhǔn)備記錄一點東西...
    微醺歲月閱讀 4,459評論 2 62
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5广辰? 答:HTML5是最新的HTML標(biāo)準(zhǔn)暇矫。 注意:講述HT...
    kismetajun閱讀 27,450評論 1 45
  • ??DOM 1 級主要定義的是 HTML 和 XML 文檔的底層結(jié)構(gòu)李根。 ??DOM2 和 DOM3 級則在這個結(jié)構(gòu)...
    霜天曉閱讀 1,428評論 1 3