我遇到的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 阅读(671) 评论(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

搜索

  •  

积分与排名

  • 积分 - 873160
  • 排名 - 37

最新评论