在JavaScript中,setTimeout怎样调用一个带对象参数的函数
window.onload=picChangePrepare;functionpicChangePrepare(){vargallery=document.getElem...
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函数改写在网上拷贝的,我不太懂。我只希望最后能成功传递一个对象数组就行。希望有人细说下怎样做,能解释下原因更好。 展开
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函数改写在网上拷贝的,我不太懂。我只希望最后能成功传递一个对象数组就行。希望有人细说下怎样做,能解释下原因更好。 展开
4个回答
展开全部
你关于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_fun()其实是函数的返回值了...这样讲应该能明白了.
另外,不推荐网上有人用的方法setTimeout('test(1)',1000);这样的形式,因为这个有很多情况下是不实用的.
他这个就是改写了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_fun()其实是函数的返回值了...这样讲应该能明白了.
另外,不推荐网上有人用的方法setTimeout('test(1)',1000);这样的形式,因为这个有很多情况下是不实用的.
展开全部
function showPic(images)
{
change_1 = window.setTimeout(function () { showPic_1(images)},1000);//setTimeout第一个参数为function类型,所以你可以这样使用
}
{
change_1 = window.setTimeout(function () { showPic_1(images)},1000);//setTimeout第一个参数为function类型,所以你可以这样使用
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
change_1 = window.setTimeout(showPic_1(),1000,images);
改成应该就可以了.
change_1 = window.setTimeout(showPic_1(images),1000);
重装定义setTimeout,传参数,你可以参考我给你的链接.
改成应该就可以了.
change_1 = window.setTimeout(showPic_1(images),1000);
重装定义setTimeout,传参数,你可以参考我给你的链接.
参考资料: http://qinglangee.javaeye.com/blog/160377
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<script>
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(images),1000);
}
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);
}
</script>
<div id="pic"></div>
<img></img>
images参数写在里面
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(images),1000);
}
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);
}
</script>
<div id="pic"></div>
<img></img>
images参数写在里面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询