JavaScript之-compareDocumentPosition函數(shù)

          Posted on 2007-09-17 08:36 puras 閱讀(2479) 評論(4)  編輯  收藏 所屬分類: JavaScript

          作者:赫連紫軒(puras)

          看了一下午的ExtJS的源碼

          在判斷一個節(jié)點是否是另一個節(jié)點的祖先時

          發(fā)現(xiàn)有compareDocumentPosition這么個函數(shù)

          程序里的寫法是:return !!(p.compareDocumentPosition(c) & 16);

          開始對為什么要&上個16感到奇怪

          因為以前沒有用過compareDocumentPosition

          所以也不知道它返回的值是什么

          經(jīng)過查詢資料

          以及測試

          總結(jié)了下compareDocumentPosition返回值的結(jié)果

          這個方法是用來判斷一個節(jié)點是另一個節(jié)點的后代(10-01010)還是祖先(20-),在前面(4-00100)還是后面(2-0),同一節(jié)點為0(00000)

          五位的二進(jìn)制的各個位置表示不同的值:

          第五位:祖先

          第四位:后代

          第三位:前面

          第二位:后面

          第一位:本身

          相匹配的值為1,反之為0

          這樣對應(yīng)五種情況,值分別是:10100(20), 01010(10), 00100(4), 00010(2), 00000(0)

          即然知道了這些值

          前面為什么要&上16

          就一目了然了

          只有第五位為1的時候,才會返回True,證明一個節(jié)點是另一個節(jié)點的祖先.

          另外提一點,這個函數(shù)在IE中不支持,但文檔上卻寫在在FF中原本為4的結(jié)果,在IE中為2,沒看明白是怎么回事.

          Feedback

          # re: JavaScript之-compareDocumentPosition函數(shù)  回復(fù)  更多評論   

          2007-09-17 09:53 by 千里冰封
          就是因為兩者瀏覽器對JS的支持度不太一樣,才會這樣

          # re: JavaScript之-compareDocumentPosition函數(shù)  回復(fù)  更多評論   

          2007-09-18 08:32 by 赫連紫軒(puras)
          @千里冰封
          嗯.我知道是因為兩個瀏覽器的不同造成的值不同
          我沒明白的為什么我測試的時候,IE里是不支持這個方法
          而在W3C上又給出了兩者的值......

          # re: JavaScript之-compareDocumentPosition函數(shù)  回復(fù)  更多評論   

          2008-04-21 14:25 by llinzzi
          我也看過w3c上的那個文章,他們是指在操作xml的時候,ff下,xml的操作可以用在html的dom上,ie下是分開的,是用activeX來創(chuàng)建的xml操作對象,那個對象是支持的該方法的 :)

          # re: JavaScript之-compareDocumentPosition函數(shù)  回復(fù)  更多評論   

          2008-04-21 14:27 by llinzzi
          比如IE下的XMLDOC對象 ie下不用xml對象操作的話 可以用contains方法

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          posts - 47, comments - 124, trackbacks - 0, articles - 0

          Copyright © puras

          主站蜘蛛池模板: 华阴市| 兴义市| 金华市| 云浮市| 咸阳市| 庆元县| 西吉县| 东光县| 青冈县| 涟水县| 安丘市| 诸暨市| 广德县| 汪清县| 土默特左旗| 清新县| 平舆县| 尤溪县| 乌恰县| 乐至县| 缙云县| 房产| 昭平县| 莱西市| 洛川县| 新乡市| 昌吉市| 克山县| 新密市| 长海县| 象州县| 博客| 义乌市| 桑植县| 汉阴县| 崇文区| 松桃| 和田市| 琼结县| 甘德县| 澄城县|