我遇到的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 閱讀(810) 評論(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

          搜索

          •  

          積分與排名

          • 積分 - 916117
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 邹平县| 手游| 佛学| 邵阳县| 泽库县| 富宁县| 石嘴山市| 清镇市| 莱西市| 楚雄市| 东光县| 罗定市| 平湖市| 嘉祥县| 泸溪县| 微博| 吉木乃县| 巴林右旗| 庆阳市| 鄂尔多斯市| 绥江县| 新丰县| 许昌市| 杭州市| 漠河县| 香港| 霍邱县| 育儿| 廉江市| 巢湖市| 兴文县| 张北县| 黎平县| 黄骅市| 湖南省| 揭东县| 隆安县| 大同县| 华安县| 拉萨市| 崇左市|