我遇到的Javascript 現象總結  

          1.事件轉移。

           剛開始我用 var menu = window.event.srcElement; 來取得事件來源對象,事件是tr上的一個onclick事件,但是

          在IE下其獲取到的對象是該tr下的中間那個td對象。當然這個方法暫時在FIREFOX下不兼容。要解決這個兼容性問題。只要

          個方法帶個參數就好了,比如this,或者event……

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

           當時覺得奇怪,而后調試發現:這個問題實在是firefox不對啦。他將無意義無必要的空白解釋成了子節點。
          比如說<tr><td>1</td> <td>2</td></tr> 在IE下我們發現其子節點為2個。但是在firefox下,他理解為5個。“#text”表

          示文本(實際是無意義的空格和換行等)在Firefox里也會被解析成一個節點。這里我們可以用判斷tagName來確定是否正確

          ,也可以用getElementsByTagName方法來彌補。lastChild firstChild 這些方法自然都發生了轉移……使用的話小心哦。

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

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

          3.實現圖片變化效果,我原來用src動態改變。因為剛開始是用了一堆代碼。
           var menu = oObj;
           //該TR 下的 TD 組
           var aTD = oObj.getElementsByTagName("TD");
           var len = aTD.length;
           //最后一TD對象
           //lastchild 以及 firstchild 屬性 在ff ie中不統一
           //var oTD = oObj.lastChild;
           var oTD = aTD[len-1];
           //alert(oTD.innerHTML);
           //最后一IMG對象
           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;
           }
          結果發現不行。為什么呢? 

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


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

          就上面這代碼,在IE 6下好好的。在IE 5下,直接關瀏覽器。而后發現其是IE 的BUG 。  回復  更多評論
            
          # re: 我遇到的Javascript 現象總結 [未登錄]
          2007-09-26 23:36 | -274°C
          回答上面的一個小問題:
          innerHTML 之所以不行,是對深層的子節點無法準確定位。  回復  更多評論
            
          # re: 我遇到的Javascript 現象總結 [未登錄]
          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)種做法是不行的,而很容易犯這中錯誤。  回復  更多評論
            
          # re: 我遇到的Javascript 現象總結
          2007-09-28 16:33 | 千里冰封
          很是受教   回復  更多評論
            
          # re: 我遇到的Javascript 現象總結
          2007-09-28 23:54 | -274°C
          @千里冰封
          見笑了,我blog記東西,往往很隨性。很多隨筆在他人看來是笑掉大牙的。  回復  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網站

          關注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 914173
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 颍上县| 日照市| 出国| 辰溪县| 华容县| 海盐县| 潼南县| 南汇区| 仙桃市| 荥经县| 观塘区| 阜新| 房产| 吉安县| 建瓯市| 泗洪县| 瑞金市| 芜湖市| 盖州市| 花莲市| 天柱县| 上蔡县| 辽中县| 宽甸| 雷州市| 隆尧县| 舞阳县| 芮城县| 惠州市| 平陆县| 商城县| 岫岩| 铁岭市| 象州县| 天镇县| 汪清县| 汤阴县| 湘潭市| 桑日县| 三江| 弥渡县|