我的问题:我有一个包含数组的JSON数组,我将其渲染到body标签中 - 所以它看起来像这样:
<body data-flashes="[["message","Welcome"],["error","This is working!"],["",""]]">
我想做以下事情:
(它总是相同的跨度) 我的尝试:
window.pause = ( ms ) -> (
date = new Date()
currentDate = null
loop
currentDate = new Date()
break unless currentDate-date < ms
)
window.showFlashes = () -> (
$.each( window.$('body').data('flashes'), () -> (
window.$('#flash_container').attr( 'class', this[0] )
window.$('#flash_container').text( this[1] )
window.$('#flash_container').effect( 'pulsate' )
alert this
pause( 10000 )
)
)
)
这是coffeescript,它将rails渲染到以下javascript文件中:
(function() {
window.pause = function(ms) {
var currentDate, date, _results;
date = new Date();
currentDate = null;
_results = [];
while (true) {
currentDate = new Date();
if (!(currentDate - date < ms)) {
break;
} else {
_results.push(void 0);
}
}
return _results;
};
window.showFlashes = function() {
return $.each(window.$('body').data('flashes'), function() {
window.$('#flash_container').attr('class', this[0]);
window.$('#flash_container').text(this[1]);
window.$('#flash_container').effect('pulsate');
alert(this);
return pause(10000);
});
};
window.exit_after = function(ms) {
var _results;
setTimeout("return 0", ms);
_results = [];
while (true) {
_results.push(ms = 1);
}
return _results;
};
}).call(this);
现在是“真正的”问题:只要我在代码中有alert this
它就可以正常工作(除了动画不能正常工作)。但当我删除它时,代码停止工作。
我的第二个问题是:有没有办法解决pause
功能?我宁愿使用setTimeout()
,但我不知道如何......
答案 0 :(得分:0)
setTimeout()是所有这一切的解决方案。
它需要两个参数,第一个是要执行的字符串,第二个是从现在开始的延迟(以毫秒为单位)。
为了简化这一点,我将你的代码块包装在一个函数中,然后使用setTimeout()调用这个函数。例如:
function do_stuff()
{
...
}
setTimeout("do_stuff()",10000);
意味着将在10秒的时间内调用do_stuff()。
我希望有所帮助。