Javascript Jquery计时器只运行一次?
我正在处理一些js/jQuery,但遇到了一个问题 有一个计时器,它应该每x秒执行一次函数。然而,问题是计时器似乎只执行一次。我问过一些朋友,但他们也不知道出了什么问题 所以如果有人有线索,请Javascript Jquery计时器只运行一次?,javascript,jquery,jquery-plugins,Javascript,Jquery,Jquery Plugins,我正在处理一些js/jQuery,但遇到了一个问题 有一个计时器,它应该每x秒执行一次函数。然而,问题是计时器似乎只执行一次。我问过一些朋友,但他们也不知道出了什么问题 所以如果有人有线索,请 <script type="text/javascript"> var id = 0; var count = 0; var obj; console.log(id); function getTweetsWithQuery(q) {
<script type="text/javascript">
var id = 0;
var count = 0;
var obj;
console.log(id);
function getTweetsWithQuery(q) {
console.log('getTweetsWithQuery did run');
$.ajax({
type: "GET",
url: "ajax.php",
data: "q=" + q,
success: function(msg){
obj = jQuery.parseJSON(msg);
start();
}
});
console.log('getTweetsWithQuery finished');
}
function updateTweets(obj) {
var count = 0;
$('#tweet' + id).animate({opacity: 0}, 1).delay(500);
$('#tweet' + id).text(obj[count].text);
$('#tweet' + id).delay(500).animate({opacity: 1}, 500);
console.log(obj[count].text);
console.log('updateTweets did run');
if(id == 9){
id = 0;
}else {
id++;
}
if(count == obj.length){
count = 0;
}else {
count++;
}
console.log('Next id: ' + id);
console.log('Next count: ' + count);
}
function start() {
console.log('start did run')
var timer = $.timer( updateTweets(obj) );
timer.set( { time : 500, autostart : true } );
}
</script>
var-id=0;
var计数=0;
var-obj;
console.log(id);
函数getTweetsWithQuery(q){
log('GetWeetswithQuery确实运行了');
$.ajax({
键入:“获取”,
url:“ajax.php”,
数据:“q=”+q,
成功:功能(msg){
obj=jQuery.parseJSON(msg);
start();
}
});
log('gettweetswithqueryfinished');
}
函数更新页面(obj){
var计数=0;
$('#tweet'+id).animate({opacity:0},1).delay(500);
$('#tweet'+id).text(obj[count].text);
$('#tweet'+id).delay(500).animate({opacity:1},500);
console.log(obj[count].text);
log('UpdateWebets确实运行了');
如果(id==9){
id=0;
}否则{
id++;
}
如果(计数==对象长度){
计数=0;
}否则{
计数++;
}
console.log('下一个id:'+id);
log('下一次计数:'+计数);
}
函数start(){
console.log('启动确实运行')
var timer=$.timer(updateweets(obj));
timer.set({time:500,autostart:true});
}
getTweetsWithQuery()函数从html中调用。您正在调用该函数,而不是为其分配引用
var timer = $.timer( function(){ updateTweets(obj); } );
您正在调用函数,而不是为其分配引用
var timer = $.timer( function(){ updateTweets(obj); } );
好吧,这并不理想,但我认为这可能有效:
function start() {
console.log('start did run')
var timer = $.timer( function(){
ar count = 0;
$('#tweet' + id).animate({opacity: 0}, 1).delay(500);
$('#tweet' + id).text(obj[count].text);
$('#tweet' + id).delay(500).animate({opacity: 1}, 500);
console.log(obj[count].text);
console.log('updateTweets did run');
if(id == 9){
id = 0;
}else {
id++;
}
if(count == obj.length){
count = 0;
}else {
count++;
}
console.log('Next id: ' + id);
console.log('Next count: ' + count);
});
timer.set( { time : 500, autostart : true } );
}
从我在插件源代码中看到的情况来看,它似乎在函数对象方面存在问题。我不知道为什么,我也没有足够的技能去理解源代码并弄清楚发生了什么,但是如果你传入一个函数定义的话,它看起来确实有效
这是一把小提琴,展示了你所拥有的以及我是如何让它工作的。好的,这并不理想,但我认为这可能会起作用:
function start() {
console.log('start did run')
var timer = $.timer( function(){
ar count = 0;
$('#tweet' + id).animate({opacity: 0}, 1).delay(500);
$('#tweet' + id).text(obj[count].text);
$('#tweet' + id).delay(500).animate({opacity: 1}, 500);
console.log(obj[count].text);
console.log('updateTweets did run');
if(id == 9){
id = 0;
}else {
id++;
}
if(count == obj.length){
count = 0;
}else {
count++;
}
console.log('Next id: ' + id);
console.log('Next count: ' + count);
});
timer.set( { time : 500, autostart : true } );
}
从我在插件源代码中看到的情况来看,它似乎在函数对象方面存在问题。我不知道为什么,我也没有足够的技能去理解源代码并弄清楚发生了什么,但是如果你传入一个函数定义的话,它看起来确实有效
这里有一把小提琴,展示了你拥有的以及我是如何让它工作的。你有
.timer
插件吗?我认为您不需要它,因为在这种情况下,setInterval
应该足够了。时间插件也包括在内。正如Rory McCrossan所描述的那样,我也使用了setInterval,但它的结果与计时器插件相同?我很难找到它。你有.timer
插件吗?我认为您不需要它,因为在这种情况下,setInterval
应该足够了。时间插件也包括在内。正如Rory McCrossan所描述的那样,我也使用了setInterval,但它的结果与计时器插件相同?我在跟踪它时遇到了问题。使用此答案,函数甚至不会被调用一次使用此答案,函数甚至不会被调用一次