前端學習系列——(九)ID選擇器具有唯一性?

    在學習CSS樣式的時候,我們肯定會遇到ID選擇器。用法一類的這裏就不說了,說一說對ID選擇器可能存在的一個誤區。

誤區:id選擇器具有唯一性?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        #id {
            background-color: #00ff00;
        }
    </style>
</head>
<body>
<div style="width:200px">
    <p id="id">哦豁</p>
    <p id="id">哦豁</p>
</div>
</body>
</html>

    上面違反了一般教程中說到的唯一性,估計大部分初學者會認爲,其中有一個標籤的樣式肯定不能生效,但實際上如下圖


    納尼?兩個都生效,這不是和類選擇器一樣了嗎,都是通用的。OK,實際上這是對唯一性的理解錯了,ID選擇器設置的樣式其實也能夠文檔中多次出現並使用。

    但是!但是!但是!重要的轉折說三邊,在JS進行dom操作是就存在問題了,如下面的例子。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style type="text/css">
        #id {
            background-color: #00ff00;
        }
    </style>
</head>
<body>
<div style="width:200px">
    <p id="id">哦豁</p>
    <p id="id">哦豁</p>
</div>
<script type="text/javascript">
    document.getElementById("id").style.backgroundColor="#ff0000";
</script>
</body>
</html>

    按照之前的想法,JS應該針對兩個p標籤都做了樣式修改,但實際上只有第一個修改了。如下圖


    於是在這裏就引申出了所謂的“唯一性”,它是針對JS而言的,當文檔存在多個相同ID時,通過getElementById方法獲取到的是在文檔中第一個出現該ID的標籤(DOM節點對象),故都推薦ID在文檔中最好只出現一次,即“唯一性”。

    在實際開發中,也是遵循這樣的原則,class用於CSS佈局,id用於JS操作DOM節點對象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章