javascript 節點排序實現代碼

來源:互聯網
上載者:User

在IE中我們可以利用sourceIndex,標準瀏覽器我們可以用compareDocumentPosition,但對於舊一點的標準瀏覽器呢?XML呢?因此我們就需要根據一個節點的屬性確定它與另一個節點的關係了。
我的思路很簡單,如果它們相同,返回0(用於去重),如果它們的父節點相同,那麼根據nextSibling確定兩者的先後順序,否則就找到其最近公用祖先與其他兩個最接近這祖先的兩個父節點(人性點說,是伯父與父親),這時不就是與父節點相同的情況嗎?!根據nextSibling確定它們的順序,它們的順序就是它們的孩子的順序(因此有一個叫李剛的爹很重要,在這個世襲制的世界上!)不過,有時最近公用祖先就是比較雙方的某一個呢,那當然是它最近了。
剩下的問題就是求最近公用祖先的問題了。我的思路也很簡單,不一定高效,畢竟大學把數學都荒廢了。不斷向上取得它們的父節點,直到最頂的HTML元素,連同最初那個節點,組成兩個數組。然後每次取數組最後的元素進行比較,如果相同就去掉它們,因為相同的都是公用祖先,不相同就往上取其中一方就行了。
下面是測試頁面與源碼:
由於使用了window.console,因此建議在firefox,IE8,chrome下查看結果。 <br /><p>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.