`

Javascript 事件转移

阅读更多


我遇到的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;
 }
结果发现不行。为什么呢? 

分享到:
评论

相关推荐

    JavaScript基础教程第8版

    书中从JavaScript语言基础开始,分别讨论了图像、框架、浏览器窗口、表单、正则表达式、用户事件和cookie,并在上一版的基础上新增了两章,讲述jQuery框架的基础知识。本书不仅介绍了基础知识和使用方法,也深入探讨...

    JavaScript编程精解

    如果你只想阅读一本关于JavaScript的图书,那么本书应该是你的首选...第8~12章则将重心转移到JavaScript环境中可用的工具上,分别详细讲解了正则表达式、与Web编程相关的知识、文档对象模型、浏览器事件和HTTP请求等。

    etcdjs, 在具有故障转移支持的Javascript中,编写了低级别 etcd v2客户端.zip

    etcdjs, 在具有故障转移支持的Javascript中,编写了低级别 etcd v2客户端 etcdjs低级别 etcd v2 &客户端,用Javascript编写,支持故障转移npm install etcdjs用法传递连接字符串var etcdjs = require('etcdjs'

    图灵机状态机识别abcd问题的javaScript实现,javascript,简易可视化,可以echart显示状态转移图

    使用javaScript实现了一个计算导论作业里面的算法,图灵机识别abcd序列问题,使用echart做了简单的可视化,欢迎大家参考

    JavaScript权威指南

    本书的重点已经从介绍特定的javascript语言和浏览器实现转移到技术这些实现基于的标准。由于事先的激增,任何一本书想要技术每个实现版本的特性、适用范围、缺陷和错误都是不实际的。重点介绍规范而不是实现会使本书...

    okexchain-javascript-sdk:okexchain javascript sdk

    客户端-OKEXChain交易类型的实现,例如用于转移和交易。 帐户-管理“帐户”和钱包,包括种子和加密的助记符生成。 安装 安装NPM软件包: $ npm i @okexchain/javascript-sdk 原料药 有关最新的API文档,请查看 。...

    javascript实现的一个图片转移效果

    javascript实现的一个图片转移效果

    JavaScript ES6函数式编程入门经典

     目前,编程语言已经将焦点从对象转移到函数。JavaScript支持函数式编程,并允许开发者编写精心设计的代码。  主要内容  ●掌握函数式编程的概念  ●清楚函数在JavaScript中的地位  ●理解真实的函数式类库...

    JavaScript ES6 函数式编程入门经典-试读

    《JavaScript ES6函数式编程入门经典》使用JavaScript ES6带你学习函数式 编程。你将学习柯里化、偏函数... 目前,编程语言已经将焦点从对象转移到函数。JavaScript支持函数式编 程,并允许开发者编写精心设计的代码。

    JavaScript模板引擎Nunjucks.zip

    Nunjucks 是一个更复杂的 JavaScript 模板引擎,提供丰富的语言特性和块继承、自动转移、宏和异步控制等等。示例代码:{% extends "base.html" %} {% block header %} &lt;h1&gt;{{ title }} {% endblock %...

    javascript-refresher:2014 年为 ES5 编写的 TDD JavaScript katas

    待办事项清单 将 Ruby Refresher Rspec 测试转换为 Jasmine 测试 添加其他问题(例如数字转换) 解决每个问题并将解决方案转移到指示克隆存储库: $ git clone git@github.com:andrewhercules/javascript-ref

    JavaScript 常见安全漏洞和自动化检测技术

    随着 Web2.0 的发展以及 Ajax 框架的普及,富客户端 Web 应用(Rich Internet Applications,RIA)日益增多,越来越多的逻辑已经开始从服务器端转移至客户端,这些逻辑通常都是使用 JavaScript 语言所编写。...

    hecs:用Javascript编写的实验性ECS

    用Javascript编写的实验性ECS。 不再需要维护此项目 我已经将npm软件包转移到一个新项目中。 hecs的最后维护版本是0.1.1 。 我目前正在维护一个新的ECS项目并鼓励用户转向该项目。 目标 表现 尽可能少的内存分配和...

    javascript-refresher:谢谢大力士

    JavaScript 复习 介绍 在完成了的,我决定使用 JavaScript 和 Jasmine 重新创建,以进一步巩固我对 ... 解决每个问题并将解决方案转移到 指示 克隆存储库: $ git clone git@github.com:andrewhercules/javascript-

    webencryption:用于加密内容的简单(离线)HTML和Javascript

    网络加密 简单HTML和Javascript用于(脱机)使用... 此实现无法解决任何这些问题,而只是转移了重点。 易于操作:在任何主流操作系统上的浏览器中下载并运行。 信任:代码是Javascript,您可以按原样下载并运行,没

    lexr:面向Javascript开发人员的词法分析器

    lexr和grammr致力于重新考虑flex和bison的传统过程如何协同工作,并将开发转移到更现代的过程。 开发这两个项目是为了在的返工中实施该项目,该项目旨在可视化代码以教授入门编程。特征当前的Lexical Analyzer具有...

    preboot:协调同构通用JavaScript Web应用程序从服务器到客户端视图的状态转移

    该库可与任何前端JavaScript框架(即React,Vue,Ember等)一起使用,但确实为Angular应用提供了一些额外的便利模块。 预引导的主要功能包括: 记录和播放事件 立即响应服务器视图中的某些事件 即使重新渲染页面...

Global site tag (gtag.js) - Google Analytics