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

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

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

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

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

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

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

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

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

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

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

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

          posted on 2007-09-19 08:52 -274°C 閱讀(810) 評論(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 。  回復  更多評論
            
          # re: 我遇到的Javascript 現(xiàn)象總結(jié) [未登錄]
          2007-09-26 23:36 | -274°C
          回答上面的一個小問題:
          innerHTML 之所以不行,是對深層的子節(jié)點無法準確定位。  回復  更多評論
            
          # 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)種做法是不行的,而很容易犯這中錯誤。  回復  更多評論
            
          # re: 我遇到的Javascript 現(xiàn)象總結(jié)
          2007-09-28 16:33 | 千里冰封
          很是受教   回復  更多評論
            
          # re: 我遇到的Javascript 現(xiàn)象總結(jié)
          2007-09-28 23:54 | -274°C
          @千里冰封
          見笑了,我blog記東西,往往很隨性。很多隨筆在他人看來是笑掉大牙的。  回復  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網(wǎng)站

          關(guān)注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 916110
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 上犹县| 夏邑县| 博客| 仪征市| 汤阴县| 汽车| 伊金霍洛旗| 元谋县| 河东区| 潞城市| 洛宁县| 清丰县| 日土县| 普兰县| 临高县| 彭泽县| 额尔古纳市| 曲阳县| 灌南县| 赤城县| 城口县| 东山县| 二连浩特市| 四子王旗| 开江县| 乌拉特前旗| 宣威市| 大安市| 遂溪县| 明水县| 林州市| 汉寿县| 思南县| 遵化市| 偏关县| 郓城县| 开阳县| 申扎县| 英德市| 建宁县| 平阳县|