IE8 appendChild“对方法或属性访问的意外调用”

时间:2013-09-19 15:41:11

标签: javascript jquery internet-explorer-8 appendchild

我真的需要帮助解决这个问题。 IE8上似乎只有。 IE7工作正常,这很奇怪。我正在使用IE9(F2)开发工具IE8模拟器,它看起来效果很好。我还检查了VMware本机IE8并获得了相同的结果。无论如何,这是IE8中appendChild的问题?我怎样才能解决这个问题,并且有一个jquery或更好的编码方法。

IE报告此问题为** s.appendChild(document.createTextNode(jcode)); **“对方法或属性访问的未经调用的调用”

for (var i=0; i<showContain.length+1; i++) 
  { 
var s = document.createElement('script');
s.setAttribute('type','text/javascript'); 
var jcode = "$('#showdiv" + i + "').mouseover(function(){$('.showcaseoff').hide(); $('#showcase" + i + "').show()});";
s.appendChild(document.createTextNode(jcode));
document.body.appendChild(s);
} 

...谢谢

1 个答案:

答案 0 :(得分:1)

这似乎只是某些IE版本的限制。但是,您似乎对替代方案持开放态度:

  

如何重新安排此功能?

我猜这个片段来自沮丧,i似乎改变了.show()的价值。这可能是由于JavaScript目前缺少块级范围和混合.mouseover()的异步性质,所以它在循环已经运行完成后引用i并将其递增到{{1 }}

最终,您将能够使用let代替showContain.length+1在循环中创建块级var(该关键字是即将推出的ECMAScript 6标准的一部分)。但是,您目前可以使用closure来隔离i范围内i的每个值。

function