2013-06-20 11 views
0

我有一些脚本从服务器调用AJAX信息,然后将信息显示在页面上的块中。每隔8秒钟,这些块就会褪色成为一组新的信息。检测数组对象是否“正在使用”

来自服务器的信息存储在一个固定队列中,每8秒将新项目推送给它。

并且对于每个块我都会从该数组中抓取一个随机项来显示。唯一的事情是我的块正在得到很多重复。

是否有方法检查并查看该数组项是否已从另一个块调用,如果有,它将继续查找另一个未使用的项。

var queue = FixedQueue(50); 

    $(document).ready(function() { 
    $('.submit').click(function(){ 
     setInterval(function(){ 
     queue.push(fulltweet); 
    },8000); 
    }); 
    }); 

    setInterval(function(){ 
     randotime = intervals[Math.floor(Math.random()*intervals.length)]; 
      $('.block1', '.photo1:nth-child(1)').queue(function(){ 
       $(this).hide(); 
       $(this).html(queue[0]); 
       $(this).fadeIn(2000); 
       $(this).delay(randotime); 
       $(this).dequeue(); 
      }); 
      $('.block1', '.photo1:nth-child(1)').fadeOut(2000); 
    },randotime); 

我创建基于队列的长度的随机数,并用它来打电话queue[rando]但同样,我不断收到重复的块。

+1

你能发布你的代码吗? – Blender

+0

为什么你选择一个随机的而不只是第一个?当您从队列中读取第一个值时,该值通常也会被删除,而第二个值将成为第一个值。那么你永远不会选择相同的值两次。 –

回答

0

首先,如果您不想在数组中重复项目,请不要让它们重复。在将新项目插入数组之前,请控制它是否存在于数组中。如果使用对象而不是原始类型(字符串,整数等),则使用相等操作可能不起作用。因此,您需要一个函数检查在插入之前给定元素是否存在于数组中,并且此函数必须使用一个用于比较两个给定对象的equals函数。

其次,JavaScript允许您在运行时向对象添加字段。所以当一个块到达并显示一个对象时,你可以在这个对象上放置一个字段。假设它的名字是'inuse'。

当嵌段A到达物体:

object.inuse = true; 

当块B到达随机相同的对象:

var object = pickRandomly(); 
while (object.inuse) { 
    object = pickRandomly(); 
} 
// here's the unique object which is not used by another block. 

我希望帮助。 如果您可以提供示例代码,我可以提供更好的答案。

相关问题