2011-04-23 4 views
0

J'essaie de créer une page qui affiche les tweets des utilisateurs, mais entre chaque tweet, je veux visualiser l'espace qui représente ce que l'utilisateur aurait pu saisir dans cette période.Récupération des informations de l'élément suivant dans JSON (API Twitter)

Je tourne en rond avec la logique de ce que j'essaie d'accomplir et de n'aboutir à rien. Mon code actuel est ici: http://jsfiddle.net/k5234/, mais cela n'inclut pas la boucle que j'essaie d'atteindre où le code prend le champ item'created_at (date/heure du tweet actuel) et l'enlève du next item.created_at champ.

Si quelqu'un peut me diriger dans la bonne direction avec comment je peux faire fonctionner mon code, je serais vraiment reconnaissant. Je travaille sur la base que 3x   s == 1 seconde. Pour clarifier, si un utilisateur tweete à 1,05pm puis de nouveau à 1,07pm, il y aurait 120 secondes d'espace vide, c.-à-d. 120secondes * 3 caractères = 360 espaces vides entre les 2 tweets. J'espère que tout cela a du sens.

Merci, David

INFO: AJOUTÉE Imaginez que quelqu'un tweeting continue. La page sera pleine de texte. Cependant, en réalité, quelqu'un ne tweete que de temps en temps. L'espace après le tweet (jusqu'à leur prochain) sera d'une taille qui représente ce qu'ils auraient pu écrire pendant ce temps. Par exemple. Je tape un tweet, et ne tweetez plus pendant 10 minutes. Visualisé sur ma page sera ce dernier tweet, mais le précédent apparaîtra 1800 espaces vides après cela (10 minutes * 60 secondes * 3 caractères par seconde = 1800 espaces vides). Ce que je peux récupérer est la date du tweet au moment du besoin, mais ce que j'ai de la difficulté, c'est d'avoir le temps du prochain tweet pour déterminer l'écart au moment de présenter l'information de cette manière. Je ne peux pas vraiment illustrer le concept plus clairement que cela.

+0

Je pense que vous avez vraiment besoin de concevoir un graphique (pensez à une démonstration de serviette en papier) qui montre comment cela fonctionne et ce que vous essayez d'atteindre. Vendez-nous sur le problème afin que nous puissions vous aider à le résoudre, ne dites pas simplement "wah, ça ne marche pas" ... consultez http://tinyurl.com/so-hints pour avoir de très bonnes idées sur comment poser des questions "pour de vrai" – jcolebrand

+0

Je pensais avoir posé la question assez clairement. Je cherche quelqu'un pour suggérer des étapes logiques pour m'aider à atteindre mon objectif, ce qui est tout à fait évident à partir de ma question, n'est-ce pas? – SixtySticks

+0

Pas tellement, non. Vous voulez insérer trois ' ' chaque seconde en fonction de la différence entre deux horodatages? Je suis un peu perdu ce que tu espères accomplir exactement. Voulez-vous supprimer des éléments de la page à la fin? – jcolebrand

Répondre

1

Je pense que votre question est claire.

Voir si cette solution fonctionne: -

 function getTweets() { 
      html += "<pre>"; 
      $.each(data, function(i, item) { 
       html += item.text; // add tweet 
       var timeCreated = new Date(item.created_at); // date of tweet 
       if((i+1) in data) 
       { 
       var timeTillNextTweet = new Date(data[ i+1 ].created_at); 

       var timeDiff = timeTillNextTweet.getTime() - timeCreated.getTime(); 
       var secondsDifference = Math.floor(timeDiff/1000); 

       // use secondsDifference to generate the spaces.. 
       } 
      }); 
      html += "</pre>"; 
     } 

espérons que cette aide.

+0

Merci beaucoup pour l'aide :) Malheureusement cette ligne ne fonctionne pas, même avec ')' ajouté: var timeTillNextTweet = new Date (data [i + 1] .created_at; – SixtySticks

+0

Désolé pour le délai de réponse, mais votre code édité a fonctionné un régal :) Merci! – SixtySticks

0

Peut-être que quelque chose le long de ces lignes:

var current; 
var previous; 
$.each(data, function(i, item) { 
    previous = current; 
    current = Date.parse(item.created_at); 
    html += "Tweet " + i +" " + (previous - current)/3000 + " spaces\n" 
}); 
Questions connexes