我遇到的Javascript 現(xiàn)象總結(jié)  

          1.事件轉(zhuǎn)移。

           剛開始我用 var menu = window.event.srcElement; 來(lái)取得事件來(lái)源對(duì)象,事件是tr上的一個(gè)onclick事件,但是

          在IE下其獲取到的對(duì)象是該tr下的中間那個(gè)td對(duì)象。當(dāng)然這個(gè)方法暫時(shí)在FIREFOX下不兼容。要解決這個(gè)兼容性問(wèn)題。只要

          個(gè)方法帶個(gè)參數(shù)就好了,比如this,或者event……

          2.在IE下DOM編程正常取到的對(duì)象在FIREFOX下變了。

           當(dāng)時(shí)覺得奇怪,而后調(diào)試發(fā)現(xiàn):這個(gè)問(wèn)題實(shí)在是firefox不對(duì)啦。他將無(wú)意義無(wú)必要的空白解釋成了子節(jié)點(diǎn)。
          比如說(shuō)<tr><td>1</td> <td>2</td></tr> 在IE下我們發(fā)現(xiàn)其子節(jié)點(diǎn)為2個(gè)。但是在firefox下,他理解為5個(gè)。“#text”表

          示文本(實(shí)際是無(wú)意義的空格和換行等)在Firefox里也會(huì)被解析成一個(gè)節(jié)點(diǎn)。這里我們可以用判斷tagName來(lái)確定是否正確

          ,也可以用getElementsByTagName方法來(lái)彌補(bǔ)。lastChild firstChild 這些方法自然都發(fā)生了轉(zhuǎn)移……使用的話小心哦。

          比如為了達(dá)到兼容。我添加了一些判斷。

           while(oIMG.tagName != "IMG" )
           {
            oIMG = oIMG.previousSibling;
           }

          3.實(shí)現(xiàn)圖片變化效果,我原來(lái)用src動(dòng)態(tài)改變。因?yàn)閯傞_始是用了一堆代碼。
           var menu = oObj;
           //該TR 下的 TD 組
           var aTD = oObj.getElementsByTagName("TD");
           var len = aTD.length;
           //最后一TD對(duì)象
           //lastchild 以及 firstchild 屬性 在ff ie中不統(tǒng)一
           //var oTD = oObj.lastChild;
           var oTD = aTD[len-1];
           //alert(oTD.innerHTML);
           //最后一IMG對(duì)象
           var oIMG = oTD.lastChild;
           while(oIMG.tagName != "IMG" )
           {
            oIMG = oIMG.previousSibling;
           }
              if (oIMG.src.indexOf("Triumph_1") != -1)
              {
            oIMG.src = oIMG.src.replace(/Triumph_1/g, "Triumph_2");
           }
          感覺臃腫。

          但是覺得每次這樣怪麻煩,于是用innerHTML:
             if (menu.innerHTML.indexOf("Triumph_1") != -1)
              {
            var temp = menu.innerHTML.replace(/Triumph_1/g, "Triumph_2");
            menu.innerHTML = temp;
           }
          結(jié)果發(fā)現(xiàn)不行。為什么呢? 

          posted on 2007-09-19 08:52 -274°C 閱讀(813) 評(píng)論(5)  編輯  收藏 所屬分類: web前端


          FeedBack:
          # re: 我遇到的Javascript 現(xiàn)象總結(jié) [未登錄]
          2007-09-26 23:35 | -274°C
          while(tbody.hasChildNodes())
          {
          tbody.removeChild(tbody.lastChild);
          }

          就上面這代碼,在IE 6下好好的。在IE 5下,直接關(guān)瀏覽器。而后發(fā)現(xiàn)其是IE 的BUG 。  回復(fù)  更多評(píng)論
            
          # re: 我遇到的Javascript 現(xiàn)象總結(jié) [未登錄]
          2007-09-26 23:36 | -274°C
          回答上面的一個(gè)小問(wèn)題:
          innerHTML 之所以不行,是對(duì)深層的子節(jié)點(diǎn)無(wú)法準(zhǔn)確定位。  回復(fù)  更多評(píng)論
            
          # re: 我遇到的Javascript 現(xiàn)象總結(jié) [未登錄]
          2007-09-28 11:07 | -274°C
          改變span的顯示情況中:
          (1)var x = document.getElementById(obj_id).innerHTML;
          //x =='1' ? x='2':x='1';
          x = x =='1' ? '2':'1';

          (2)
          document.getElementById(obj_id).innerHTML = document.getElementById(obj_id).innerHTML =='1' ?'2':'1';
          //document.getElementById(obj_id).innerHTML =='1' ? document.getElementById(obj_id).innerHTML='2':document.getElementById(obj_id).innerHTML='1';

          第(1)種做法是不行的,而很容易犯這中錯(cuò)誤。  回復(fù)  更多評(píng)論
            
          # re: 我遇到的Javascript 現(xiàn)象總結(jié)
          2007-09-28 16:33 | 千里冰封
          很是受教   回復(fù)  更多評(píng)論
            
          # re: 我遇到的Javascript 現(xiàn)象總結(jié)
          2007-09-28 23:54 | -274°C
          @千里冰封
          見笑了,我blog記東西,往往很隨性。很多隨筆在他人看來(lái)是笑掉大牙的。  回復(fù)  更多評(píng)論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊(cè)

          JAVA網(wǎng)站

          關(guān)注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 917238
          • 排名 - 40

          最新評(píng)論

          主站蜘蛛池模板: 长汀县| 黄冈市| 阳新县| 美姑县| 淅川县| 贡山| 龙山县| 屏边| 运城市| 扎兰屯市| 武平县| 嘉定区| 阳江市| 织金县| 安乡县| 钦州市| 诸城市| 静乐县| 大新县| 吕梁市| 镇原县| 莱阳市| 集贤县| 营山县| 大城县| 略阳县| 汨罗市| 鄂托克前旗| 会昌县| 会宁县| 永春县| 凤山县| 融水| 岳西县| 隆回县| 汉源县| 镇远县| 凤翔县| 三原县| 昌宁县| 西充县|