gpt4 book ai didi

javascript - IE8 appendChild "Unexpected call to method or property access"

转载 作者:行者123 更新时间:2023-11-30 05:44:12 26 4
gpt4 key购买 nike

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

谢谢...

最佳答案

这似乎只是某些 IE 版本的限制。但是,您似乎对其他选择持开放态度:

How can I rearrange this to work?

我猜这段代码是因为 i 似乎在最后更改了 .show() 的值而感到沮丧。这将是由于 JavaScript 当前缺乏 block 级作用域和混合 .mouseover() 的异步性质,因此它会在循环已经运行后引用 i完成并将其递增到 showContain.length+1

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

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

for (var i=0; i<showContain.length+1; i++) {
eachShowcase(i);
}

关于javascript - IE8 appendChild "Unexpected call to method or property access",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18899180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com