在JavaScript中,setTimeout怎样调用一个带对象参数的函数

[复制链接]
查看11 | 回复4 | 2016-9-15 13:03:20 | 显示全部楼层 |阅读模式
window.onload = picChangePrepare;
function picChangePrepare()
{
var gallery = document.getElementById("pic");
var images = gallery.getElementsByTagName("img");
showPic(images);/*希望传递一个对象数组*/
}
function showPic(images)
{
change_1 = window.setTimeout(showPic_1(),1000,images);
}
function showPic_1(images)
{
alert(typeof images);
}
var __sto = setTimeout;
window.setTimeout = function(callback,timeout,param)
{

var args = Array.prototype.slice.call(arguments,2);

var _cb = function()

{

callback.apply(null,args);

}



__sto(_cb,timeout);
}
运行后alert()直接显示images未定义。最后一个setTimeout函数改写在网上拷贝的,我不太懂。我只希望最后能成功传递一个对象数组就行。希望有人细说下怎样做,能解释下原因更好。

回复

使用道具 举报

千问 | 2016-9-15 13:03:20 | 显示全部楼层
你关于window.setTimeout这一段函数不是你自己写的对吧?他这个就是改写了setTimeout函数,使他"更方便"在setTimeout时调用参数...其实完全没有必须的.我不在你这里改了,你理解一下.function test(s){ alert(s);}window.setTimeout(function(){test('str');},1000);这样就可以了...为什么是这样呢.因为setTimeout要求的第一个参数是函数...比如setTimeout(a_fun,1000)这样是可以的,a_fun是一个函数.但是setTimeout(a_fun(),1000);这样就不行了.因为这里a_f
回复

使用道具 举报

千问 | 2016-9-15 13:03:20 | 显示全部楼层
function showPic(images){ change_1 = window.setTimeout(function () { showPic_1(images)},1000);//setTimeout第一个参数为function类型,所以你可以这样使用}
回复

使用道具 举报

千问 | 2016-9-15 13:03:20 | 显示全部楼层
change_1 = window.setTimeout(showPic_1(),1000,images); 改成应该就可以了. change_1 = window.setTimeout(showPic_1(images),1000);重装定义setTimeout,传参数,你可以参考我给你的链接.
回复

使用道具 举报

千问 | 2016-9-15 13:03:20 | 显示全部楼层
window.onload = picChangePrepare;function picChangePrepare(){ var gallery = document.getElementById("pic"); var images = gallery.getElementsByTagName("img");
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行