JavaScript之-compareDocumentPosition函數(shù)

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

          作者:赫連紫軒(puras)

          看了一下午的ExtJS的源碼

          在判斷一個(gè)節(jié)點(diǎn)是否是另一個(gè)節(jié)點(diǎn)的祖先時(shí)

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

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

          開(kāi)始對(duì)為什么要&上個(gè)16感到奇怪

          因?yàn)橐郧皼](méi)有用過(guò)compareDocumentPosition

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

          經(jīng)過(guò)查詢資料

          以及測(cè)試

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

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

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

          第五位:祖先

          第四位:后代

          第三位:前面

          第二位:后面

          第一位:本身

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

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

          即然知道了這些值

          前面為什么要&上16

          就一目了然了

          只有第五位為1的時(shí)候,才會(huì)返回True,證明一個(gè)節(jié)點(diǎn)是另一個(gè)節(jié)點(diǎn)的祖先.

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

          Feedback

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

          2007-09-17 09:53 by 千里冰封
          就是因?yàn)閮烧邽g覽器對(duì)JS的支持度不太一樣,才會(huì)這樣

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

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

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

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

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

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

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


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

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

          Copyright © puras

          主站蜘蛛池模板: 涞水县| 江陵县| 小金县| 霍林郭勒市| 奉新县| 孝义市| 南城县| 曲松县| 柳林县| 安溪县| 南岸区| 东方市| 嘉禾县| 衡山县| 邵阳县| 绥宁县| 永顺县| 东源县| 宜州市| 汉寿县| 张家港市| 稷山县| 琼结县| 龙南县| 新建县| 永宁县| 石阡县| 临江市| 红原县| 本溪市| 乡城县| 女性| 肇庆市| 贡嘎县| 江阴市| 南充市| 五台县| 高安市| 芦溪县| 电白县| 绥宁县|