如下,通过动态(如ajax或其他方式)再次附值 innerHTML时,发现innerHTML 中TT3这个函数的调用在火狐中出现异常。innerHTMLstr = <span id="LS4" onMouseOver="TT3(this, TS44)"> MouseOvertext </span><span id="TS44">TargetText</span> //动态获取innerHTMLstr。注: 为了易于看清,这里双引号不转义。xg.innerHTML = innerHTMLstr; //这时TT3(this, TS44) 这个函数能正常调用,运行正常。xg.innerHTML = null;innerHTMLstr = <span id="LS4" onMouseOver="TT3(this, TS44)"> MouseOvertext </span><span id="TS44">TargetText</span> //重新动态获取innerHTMLstr, 这个innerHTMLstr与之前的innerHTMLstr一模一样。(特别是再次包含有TT3(this, TS44)这个调用和TS44这个元素。)xg.innserHTML = innerHTMLstr; //再次附值后这时TT3(this, TS44) 这个函数在火狐中不能正常工作。在IE, Chrome 等其他浏览器工作正常。经debug检查后觉得出错可能原因有: 1) 第二次附值 innerHTML后,火狐没有清掉之前的TS44这个元素,即出现TS44的id重复,导致出错。2) 原先的 TT3(this, TS44)被绑定到旧的TS44。可能需要重新绑定函数。我试了一个有效的解决,在第二次将innerHTMLstr附值给xg前,把 innerHTMLstr 中的TS44 替换加上随机数。结果TT3就能工作正常。但这个解决方案是没办法的办法。 以下是我上网找到的几种解决方法好象都没用: 1) LS4.removeAttribute(onmouseover) 2) 移除 xg 下的 childnodes 3) $(“#LS4”).unbind() --- 还请高人指点正确解决途径。多谢!
解决方案 »
- 使用javascript删除表格的bug
- 关于抽奖程序奖项显示问题
- js动态树解析,如何解决一次性加载的问题
- 通过DOM查找节点,找不到的话返回值是什么?
- frameset里分成两个框架分别显示a.jsp和b.jsp,现在我要点击a.jsp里的按钮时让b.jsp里的form提交,有什么方法吗
- 感激,高兴、再一次放分!!
- 两个小问题中,还有一个没回答
- 请问一下vbscript和javascript的优缺点以及它们的使用场合
- easyui问题怎么设置多个表单校验器,问小度度他说不知道,我来问问大神们。
- xmlHttpRequest的跨域post问题
- 如何往一个可编辑div的指定光标处插入图片
- 怎样从一个html获取另一个html文件text的name或者id属性
TT3(this, TS44)
你直接用id 来引用对象是吧
我想你改成TT3(this, 'TS44')然后修改下 tt3函数 把 ts44的获取方法改成 document.getElementByid 获取
我想这样浏览器没理由 出错了