目测不会有问题,也不会你想要的效果
if (s==3){t=0}这里你写错了吧,应该是s=0吧。obj.src=ImgName[t]??乱七八糟
你的代码执行流程:
1、obj.src='/images/loading.gif'赋值后,就等着小图标onload
2、小图标加载完成时,把图片地址改成当前图片地址,等图片onload(不会有你要的效果,小图标被替换了,缓存、网速快的话瞬间完事)
3、图片onload时,又修改地址为自身,不会触发onload了
我猜IE栈溢出是第3步的问题,改了图片地址就触发onload,不知道是什么版本IE
还有啊,图片地址用数组不好么,还搞个类多麻烦
var strimg=[]strimg[0]="/upfile/2013-11/sfsfsf.jpg"
strimg[1]="/upfile/2013-11/sfsdfsdfsdf.jpg"
strimg[2]="/upfile/2013-11/sdfsdfsd.jpg"
要图片加载完毕前,小图标还在转的话,不要轻易覆盖掉小图标的地址,另外建个IMG加载图片
var s=0function imgshow(obj){
s<strimg.length&&++s||(s=0)//你定义了length属性,却不用?
obj.src='/images/loading.gif'
var img=new Image()
img.src=strimg[s]
img.onload=function(){
obj.src=img.src//图片加载完毕后再显示
}
}
你这个是因为你进入死循环了,以name属性为例,你name属性的get访问器的代码是:
return "hello! I'm " + this.name
此时return中包含this.name,而这个this.name又会再次进入你的get访问器,然后又发现有name又进入你的访问器,死循环直到内存溢出,你的age属性的set访问器一样的道理,改成下面这样就可以了。
var person = { }(function () {
var _name = "Rainn", _age = 25
Object.defineProperties(person, {
name: {
get: function () {
return "hello! I'm " + _name
},
set: function (newValue) {
_name = newValue + "(changed)"
}
},
age: {
get: function () {
return "18 forever"
},
set: function (newValue) {
_age -= 1
}
}
})
})()