关于javascript中的setTimeout

mynamedaike 2015-10-14 02:41:39

function showCart(){
var props=getAllProductsInCart();
productPopup();
function productPopup(){
var prop=props.shift();
if(typeof prop!=='undefined'){
alert(prop+':'+cart[prop]);
setTimeout('productPopup()',5000);
}
}
}

javascript中的setTimeout中的执行函数只能是全局函数,如果想调用上面这种函数体内的函数,应该怎么办?上面这个函数是遍历Cart对象中的属性,没隔5秒钟弹出一个alert显示属性名和属性值。
...全文
122 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2015-10-14
  • 打赏
  • 举报
回复
引用 7 楼 mynamedaike 的回复:
[quote=引用 6 楼 mynamedaike 的回复:] [quote=引用 4 楼 jslang 的回复:] [quote=引用 2 楼 mynamedaike 的回复:] 现在的问题是运行时总是报productPopup is not defined的错。
那这样试试 setTimeout(function(){ productPopup() },5000); [/quote] 这样也对了,像二楼那样光写一个函数名也是对的,能给我解释一下为什么吗?[/quote] 没注意,原来都是你回答我的。。。你的两种方法都是正确的。用function把函数包裹起来为什么也是可以的?[/quote] function(){} 作为表达式时本来就是返回一个函数对象的引用。当然可以了
天际的海浪 2015-10-14
  • 打赏
  • 举报
回复
引用 6 楼 mynamedaike 的回复:
[quote=引用 4 楼 jslang 的回复:] [quote=引用 2 楼 mynamedaike 的回复:] 现在的问题是运行时总是报productPopup is not defined的错。
那这样试试 setTimeout(function(){ productPopup() },5000); [/quote] 这样也对了,像二楼那样光写一个函数名也是对的,能给我解释一下为什么吗?[/quote] setTimeout的第一个参数可以是字符串,也可以是函数对象的引用 光写一个函数名就是要获取这个函数对象的引用
mynamedaike 2015-10-14
  • 打赏
  • 举报
回复
引用 6 楼 mynamedaike 的回复:
[quote=引用 4 楼 jslang 的回复:] [quote=引用 2 楼 mynamedaike 的回复:] 现在的问题是运行时总是报productPopup is not defined的错。
那这样试试 setTimeout(function(){ productPopup() },5000); [/quote] 这样也对了,像二楼那样光写一个函数名也是对的,能给我解释一下为什么吗?[/quote] 没注意,原来都是你回答我的。。。你的两种方法都是正确的。用function把函数包裹起来为什么也是可以的?
mynamedaike 2015-10-14
  • 打赏
  • 举报
回复
引用 4 楼 jslang 的回复:
[quote=引用 2 楼 mynamedaike 的回复:] 现在的问题是运行时总是报productPopup is not defined的错。
那这样试试 setTimeout(function(){ productPopup() },5000); [/quote] 这样也对了,像二楼那样光写一个函数名也是对的,能给我解释一下为什么吗?
天际的海浪 2015-10-14
  • 打赏
  • 举报
回复
引用 3 楼 mynamedaike 的回复:
[quote=引用 1 楼 jslang 的回复:] setTimeout(productPopup,5000);
谢谢你,这样对了。但是我有些疑惑,setTimeout的第一个参数究竟应该是函数名还是函数的执行啊?[/quote] setTimeout的第一个参数可以是字符串,也可以是函数对象的引用
天际的海浪 2015-10-14
  • 打赏
  • 举报
回复
引用 2 楼 mynamedaike 的回复:
现在的问题是运行时总是报productPopup is not defined的错。
那这样试试 setTimeout(function(){ productPopup() },5000);
mynamedaike 2015-10-14
  • 打赏
  • 举报
回复
引用 1 楼 jslang 的回复:
setTimeout(productPopup,5000);
谢谢你,这样对了。但是我有些疑惑,setTimeout的第一个参数究竟应该是函数名还是函数的执行啊?
mynamedaike 2015-10-14
  • 打赏
  • 举报
回复
现在的问题是运行时总是报productPopup is not defined的错。
天际的海浪 2015-10-14
  • 打赏
  • 举报
回复
setTimeout(productPopup,5000);

87,925

社区成员

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

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