【JS學習筆記】DOM基礎-位元組點,父節點

來源:互聯網
上載者:User

標籤:應用   offset   ie9   之間   charset   parent   org   absolute   nbsp   

一、DOM基礎

(1)什麼是DOM?DOM,即document,是用來操作頁面上的元素,比如操作div擷取,修改樣式等。是JS的組成部分,還是一套規範。

(2)瀏覽器的支援情況

  現在主流的瀏覽器有3種,分別是IE,Chrome,Firefox。

  IE:在IE6-8版本中,對DOM的支援差不多是百分之十幾差不多了,但是到了IE9就有了質的飛躍。

  Chrome:介於兩者之間,在60%左右,對DOM支援的不是那麼的好也不是那麼的差。

  Firefox:對於DOM的支援幾乎可以用99%來形容。

二、DOM節點

在CSS階段,我們認為是標籤;

在JS階段,我們認為是元素;

在DOM階段,我們認為是節點。

(1)childNodes

  

  擷取子節點

特別注意,在Chrome中和IE9中,版本越高越會出現問題,它們會把空白文本也當做子節點,可是在IE6-8中卻會正常運行,出現正確的子節點數,十分詭異。

文本節點,純文字或者空白文本,比如aaaaa

元素節點,比如<span>aaaaaa</span>

  

  nodeType,節點的類型

nodeType==3——>文本節點

nodeType==1——>元素節點

 

將childNodes和nodeType配合起來使用

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子節點</title>
<script>
window.onload = function()
{
    var oUl=document.getElementById(‘ul1‘);
    
    //alert(oUl.childNodes.length);/*在Chrome中,空的文本也會被當做子節點*/
    //nodeType==3——>文本節點
    //nodeType==1——>元素節點
    for(var i=0;i<oUl.childNodes.length;i++)
    {
        //alert(oUl.childNodes[i].nodeType);
        //判斷子節點是不是元素節點
        if(oUl.childNodes[i].nodeType==1)
        {
            oUl.childNodes[i].style.background=‘red‘;
            }
        }
    };
</script>

</head>

<body>
<ul id="ul1">
    <li></li>
    <li></li>

</ul>

aaaaaaaa 文本節點
<span>aaaaaaaa元素節點</span>
</body>
</html>

 

  children——非常好用,它只包括元素節點卻不包括文本節點

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>子節點</title>
<script>
window.onload = function()
{
    var oUl=document.getElementById(‘ul1‘);
    
    //alert(oUl.childNodes.length);/*在Chrome中,空的文本也會被當做子節點*/
    //nodeType==3——>文本節點
    //nodeType==1——>元素節點
    /*for(var i=0;i<oUl.childNodes.length;i++)
    {
        //alert(oUl.childNodes[i].nodeType);
        //判斷子節點是不是元素節點
        if(oUl.childNodes[i].nodeType==1)
        {
            oUl.childNodes[i].style.background=‘red‘;
            }
        }*/
    alert(oUl.children.length);
    };
</script>

</head>

<body>
<ul id="ul1">
    <li></li>
    <li></li>

</ul>

aaaaaaaa 文本節點
<span>aaaaaaaa元素節點</span>
</body>
</html>

 

 

(2)parentNode,只要是父節點不變,是不會發生變化的

  例子:點選連結,隱藏整個li

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>父節點的應用</title>
<script>
window.onload = function()
{
    var aA=document.getElementsByTagName(‘a‘);
    
    for(var i=0;i<aA.length;i++)
    {
        aA[i].onclick = function ()
        {
            this.parentNode.style.display="none";/*this指代a的父節點是<li>,則把a所在的li隱藏掉*/
            };
        }
    };
</script>

</head>

<body>
<ul id="ul1">
    <li>aaaaaaa <a href="javascript:;">隱藏</a></li>
    <li>bbbbbbb <a href="javascript:;">隱藏</a></li>
    <li>ccccccc <a href="javascript:;">隱藏</a></li>
    <li>ddddddd <a href="javascript:;">隱藏</a></li>
    <li>eeeeeee <a href="javascript:;">隱藏</a></li>
</ul>

aaaaaaaa 文本節點
<span>aaaaaaaa元素節點</span>
</body>
</html>

 

(3)offsetParent——和parentNode不同,它是擷取元素用來定位的父級,不一定是前一個父節點,只能是有定位的父節點,可能是上級可能是上上級等等

  擷取元素在頁面上的實際位置

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>offsetParent</title>
<style>
#div1{
    width:200px;
    height:200px;
    background-color:#CCC;
    margin:100px;
    position:relative;
    }
#div2{
    width:100px;
    height:100px;
    background-color:red;
    position:absolute;
    left:50px;
    top:50px;
    }
</style>
<script>
window.onload = function ()
{
    var oDiv2=document.getElementById(‘div2‘);
    
    alert(oDiv2.offsetParent);
    };
</script>
</head>

<body>
    <div id="div1">
        <div id="div2"></div>
    </div>
</body>
</html>

 

【JS學習筆記】DOM基礎-位元組點,父節點

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.