2010-06-13 9 views
4

Comme le titre l'indique, est-ce que quelqu'un a un moyen clair d'implémenter ce type de fonctionnalité?Comment ajouter un élément au début d'une liste dynamique

Exemple: Si vous allez à http://weewar.com, dans leur première page, vous avez remarqué un module ajax qui se met à jour toutes les secondes. Cependant, tous les nouveaux éléments sont ajoutés en haut de la liste. Ma question concerne cette même fonctionnalité.

Quelqu'un a-t-il une idée simple et claire de la façon dont on pourrait implémenter cette fonctionnalité?

Jusqu'à présent, j'ai une méthode qui crée d'abord la liste, puis une autre méthode est appelée dans un intervalle qui tire les données les plus récentes du serveur ..

Cependant, je suis coincé avec, comment puis-je ajoutez le nouveau noeud dynamique en haut de la liste.

Si vous pouvez me guider là où je peux trouver ces informations ou me donner une idée de la façon dont je peux mettre en œuvre ce que je serai très heureux et reconnaissant :)

Merci d'avance.

+0

Utilisez-vous un framework JavaScript pour effectuer vos appels Ajax? Si oui, lequel? – artlung

Répondre

2

Si vous utilisez jQuery, vous pouvez utiliser jQuery('#list_ID:first-child').prepend(new_item);

Si vous voulez le faire à l'ancienne mode, document.getElementById('list_ID').innerHTML = new_item + document.getElementById('list_ID').innerHTML;

Ou vous pouvez utiliser une méthode plus respectueuse DOM:

var list_item = document.createElement('li'); list_item.innerHTML="Some Text" document.getElementById('list_ID').insertBefore(list_item, document.getElementById('list_ID').firstChild);

+0

Merci mon pote, ton dernier s'est bien passé pour moi. J'essaie de ne pas utiliser jquery pour le moment car j'utilise YUI. Cependant, yui fournit également un moyen dans YUI 2, mais il n'est pas très clair comment appeler la méthode. Le vieux natif fonctionnait parfaitement bien! Merci à tous ceux qui ont répondu à cette question! – ericg

0

Une manière sera de recréer la liste en utilisant javascript. C'est comme list.items = newitem + list.items. Désolé d'avoir écrit un pseudo code conceptuel. Si vous avez besoin de connaître le javascript exact, envoyez-moi une réponse/un commentaire.

Vous pouvez également mettre en œuvre le même de la manière suivante aussi:

var m =document.getElementById(listElement).options.length; 
for(var i = m; i>= 0 ; i = i-1) 
    document.getElementById(cmbCategory).options[i] = document.getElementById(cmbCategory).options[i-1]; 
var opt2 = new Option(); 
opt2.value="100"; /*new value */ 
opt2.text="New option text"; 
document.getElementById(listElement).options[document.getElementById(listElement).options.length] = opt2; 
+1

Merci, j'ai eu la même idée, mais cette méthode ajoute toujours le nouvel élément au bas de la liste. Pourriez-vous développer votre exemple de code pseudo? Merci – ericg

+0

Salut, comme demandé, j'ai essayé d'ajouter du code pour mettre en œuvre la même chose. Je suis sûr que le code a quelques problèmes en ce moment. Je vais devoir réécrire le même. Cependant, vous pouvez essayer d'obtenir la même chose. – Kangkan

+0

Merci pour l'aide! Je vais essayer. – ericg

7

jQuery, il serait assez facile pour vous. Voici un exemple:

jQuery

$(document).ready(function(){ 
    $('<div>News 1</div>').prependTo('#textbox'); 
    $('<div>News 2</div>').prependTo('#textbox'); 
    $('<div>News 3</div>').prependTo('#textbox'); 
    $('<div>News 4</div>').prependTo('#textbox'); 
}); 

HTML

<div id="textbox"></div> 

Sortie

News 4 
News 3 
News 2 
News 1 

Comme vous pouvez le voir, les nouvelles qui ont été ajoutées en premier sont repoussées vers le bas.

+0

Merci, cette méthode semble assez simple et rapide. J'essayais de le faire en javascript natif. Cependant, je pense que cela pourrait être plus gênant alors j'ai d'abord pensé! – ericg

+0

jQuery enlève beaucoup de peine avec JavaScript. Construire une fonctionnalité comme http://weewar.com ne serait pas trop difficile, car jQuery est livré avec des effets éprouvés/testés, des fonctionnalités AJAX, etc. C'est juste pour plonger et apprendre la bibliothèque. C'est du temps bien passé. :) –

Questions connexes