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

          搜索

          •  

          積分與排名

          • 積分 - 917240
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 新竹市| 伊宁市| 烟台市| 苏州市| 邯郸市| 雷山县| 灵宝市| 保亭| 周宁县| 太白县| 油尖旺区| 莱芜市| 江安县| 奉节县| 兴和县| 盐山县| 广昌县| 六安市| 浑源县| 沙田区| 若尔盖县| 石首市| 陈巴尔虎旗| 桑植县| 呼伦贝尔市| 黑山县| 乌鲁木齐县| 辉县市| 嘉峪关市| 古丈县| 门头沟区| 内乡县| 漾濞| 清远市| 堆龙德庆县| 洪江市| 余庆县| 泾阳县| 社会| 前郭尔| 尉氏县|