js 堆栈溢出

JavaScript05

js 堆栈溢出,第1张

目测不会有问题,也不会你想要的效果

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=0

function 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//图片加载完毕后再显示

    }

}

我想问一下id为“reset”是不是button,如果是的话你的点击事件就递归了,而且没有调出条件

id为“reset”是button,那么你按了“reset”就触发了

$('input[type=button]').click(function(){

if($('#isreset').is(":checked")){

$('#reset').click()

}

})这个点击事件

而这个点击事件又会执行 $('#reset').click()(如果$('#isreset').is(":checked"))为真)

那就一直循环了

stack overflow at line:22的意思是当电脑程序运行到22行的时候,堆栈溢出。

堆栈是一个在计算机科学中经常使用的抽象数据。堆栈中的物体具有:最后一个放入堆栈中的物体总是被最先拿出来特性, 通常称为后进先出队列。

堆栈溢出产生的原因是由于过多的函数调用,导致调用堆栈不能容纳这些调用的返回地址,一般在递归中产生。

堆栈溢出就是不顾堆栈中分配的局部数据块的大小,向这个数据块写入了过多的数据,导致数据越界,结果覆盖了别的数据。就是在长字符串中嵌入一段代码,并将过程的返回地址覆盖为这段代码的地址,这样当过程返回时,程序就转而开始执行这段自编的代码了。

可以使用杀毒或者用优化大师清理电脑。