2

我真的需要一些帮助来解决我遇到的这个问题。好像只在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);
} 

谢谢...

4

1 回答 1

1

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

我怎样才能重新安排这个工作?

我猜这个片段来自挫败感,i似乎最终改变了价值.show().mouseover()这可能是由于 JavaScript 当前ishowContain.length+1.

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

function eachShowcase(i) {
    $('#showdiv' + i).mouseover(function(){
        $('.showcaseoff').hide();
        $('#showcase' + i).show()
    });
}

for (var i=0; i<showContain.length+1; i++) {
    eachShowcase(i);
}
于 2013-09-19T16:06:12.540 回答