javascript显10个图就出现"内存不够“的错误?

Scarroot 2005-05-14 06:14:38
为什么只是load,10个图,就会出现“内存不够”的错误???



<html>
<head>
<script>
img1=new Image();
img2=new Image();
img3=new Image();
img4=new Image();
img5=new Image();
img6=new Image();
img7=new Image();
img8=new Image();
img9=new Image();
img10=new Image();
img1.src="img/"+1+".jpg";
img2.src="img/"+2+".jpg";
img3.src="img/"+3+".jpg";
img4.src="img/"+4+".jpg";
img5.src="img/"+5+".jpg";
img6.src="img/"+6+".jpg";
img7.src="img/"+7+".jpg";
img8.src="img/"+8+".jpg";
img9.src="img/"+9+".jpg";
img10.src="img/"+10+".jpg";

function changeImg()
{
var p1=Math.ceil(Math.random()*10);
idImg1.src=document.images[p1];
setTimeout(changeImg(),4);
}


</script>
</head>
<body onload=changeImg()>
<table><img id="idImg1" height=90 width=120></table>
<script>

</script>
</body>

</html>
...全文
533 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
roviury 2010-06-23
  • 打赏
  • 举报
回复
Scarroot正解!

function changeImg()
{
changeImg()
}


就算chrome都執行不到
patchclass 2005-05-16
  • 打赏
  • 举报
回复
呵呵其实setTimeout并不能真的精确到毫秒,不过楼主这么设置绝对就是要电脑死机啊,因为显示图片是比较耗资源的
YCHelpMe 2005-05-16
  • 打赏
  • 举报
回复
呵呵,一定要用setTimeout的吗?
Scarroot 2005-05-16
  • 打赏
  • 举报
回复
或者是这样
<html>
<head>
<script>

function changeImg()
{
var p1=Math.ceil(Math.random()*10);
//alert(p1);
document.getElementById("idImg1").src="img/"+p1+".jpg";
setTimeout(changeImg,4000);//这里改为函数指针.
}


</script>
</head>
<body>
<table><img id="idImg1" height=180 width=240></table>
<script>
changeImg();
</script>
</body>

</html>












不知我这样理解有没有错呢。请高人指点...
Scarroot 2005-05-16
  • 打赏
  • 举报
回复
对setTimeout的一点理解:
MSDN中说:
In versions earlier than Microsoft® Internet Explorer 5, the first argument of setTimeout must be a string. Evaluation of the string is deferred until the specified interval elapses.
As of Internet Explorer 5, the first argument of setTimeout can be a string or a function pointer.

IE5以上,第一个参数可以是string或者是函数指针.
所以上面的程序改为这样就可以了:
<html>
<head>
<script>

function changeImg()
{
var p1=Math.ceil(Math.random()*10);
//alert(p1);
document.getElementById("idImg1").src="img/"+p1+".jpg";
setTimeout("changeImg()",4000);
}


</script>
</head>
<body>
<table><img id="idImg1" height=180 width=240></table>
<script>
changeImg();
</script>
</body>

</html>



chenyu112 2005-05-16
  • 打赏
  • 举报
回复
ding
Scarroot 2005-05-16
  • 打赏
  • 举报
回复
...........
改为setTimeout(changeImg(),4*1000);也是一样显示内存不够。。。。。。
Scarroot 2005-05-16
  • 打赏
  • 举报
回复
to pxjianke(一无所有-光明唧),
你上面的
setTimeout(changeImg(),4);是错了。
应该写成setTimeout('changeImg()',4000)不然会报错“内存不足”,因为setTimeout(changeImg(),4)这句首先会立即调用changeImg(),而不是过4 时间才调用.
还有,你用数组去代替的只是图像路径的字符串组,并不是load 图像.
光明唧 2005-05-16
  • 打赏
  • 举报
回复
img1=new Array(10);
img1[0]="img/"+1+".jpg";
img1[1]="img/"+2+".jpg";
img1[2]="img/"+3+".jpg";
img1[3]="img/"+4+".jpg";
img1[4]="img/"+5+".jpg";
img1[5]="img/"+6+".jpg";
img1[6]="img/"+7+".jpg";
img1[7]="img/"+8+".jpg";
img1[8]="img/"+9+".jpg";
img1[9]="img/"+10+".jpg";

function changeImg()
{
var p1=Math.ceil(Math.random()*10);
idImg1.src=img1[p1];
setTimeout(changeImg(),4);
}
Scarroot 2005-05-16
  • 打赏
  • 举报
回复
up 一下
Scarroot 2005-05-16
  • 打赏
  • 举报
回复
那么要怎么才能做得更好呢?请指点...谢
hchxxzx 2005-05-15
  • 打赏
  • 举报
回复
setTimeout(changeImg(),4);
改为
setTimeout(changeImg(),4*1000);//每4秒钟执行一次
donghid 2005-05-14
  • 打赏
  • 举报
回复
setTimeout(changeImg(),4); //你0.004秒就换一次图片吖???那一秒钟要换几次???1000/4=250次. setTimeout(prog,mm)这里mm的单位是毫秒吖。。。
donghid 2005-05-14
  • 打赏
  • 举报
回复
IE5.0运行出现:

IEXPLORE 在 017f:70bd4dcf 的模块 SHLWAPI.DLL 中导致堆栈错误

然后窗口关闭.

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧