2010-03-05 2 views
5

Je construis un lecteur RSS multi-flux pour l'école.écriture à un div non unique avec Javascript

aList est le div qui englobe chaque flux individuel (la quantité de flux fluctuera). TheTitle est le div qui sera rempli avec l'attribut du flux actuel.

En outre, si vous cliquez dessus, il chargera une liste d'attributs du flux actuel dans le contenu. Je me demande comment je peux charger dynamiquement les attributs dans le contenu quand on clique sur Titre, puisque le Contenu et le Titre seront des divs non uniques (je ne peux pas leur donner d'ID).

Merci pour votre aide à l'avance,

-Andrew

Répondre

1

document.getElementsByClassName ('aList'). GetElementsByTagName ('div')

+0

Honnêtement, je n'ai pas écrit de code comme celui-ci sans utiliser une bibliothèque comme MooTools depuis des lustres. Je pense que mozilla supporte nativement getElementsByClassName mais pas IE. regarder dans une implémentation personnalisée sur google. – kwcto

+0

La réponse ici est à propos de "getElementsByTagName", pas de nom de classe. IE soutient cela. – Pointy

+0

getElementsByClassName est là aussi ...? – rjh

1

Vous devriez regarder dans jQuery sélecteurs pour cela et d'autres Manipulation DOM. Quelque chose comme

$("div.theContent").attr("name", "value"); 
1

en utilisant jquery, vous pouvez utiliser le code comme suit:

$(".theTitle").bind("click", function(){ 
    $el = $(this); 
      $el.parent().$(".theContent").load('ajax/content.php?news=' . $el.text()); 
}); 

cela fera tous vos liens cliquables, un sur clic, mise à jour leurs de divs de contenu correspondant avec la valeur de ajax/content.php? news = theTitle-value

0

Vous devez être en mesure de déterminer quel élément vous voulez mettre à jour si vous ne voulez pas mettre à jour plus de un. Si les éléments sont groupés à l'intérieur d'un autre élément que a a une valeur "id", vous pouvez en profiter.

1
<div class="aList"> 
<div class="theTitle" onclick="fillContentBox(this)"></div> 
<div class="theContent"></div> 
</div> 

Et dans votre script ...

function fillContentBox(div) { 
    var theContentDiv = div.parentNode.getElementsByTagName("div")[1]; 
    // statements that do things with theContentDiv 
} 
1

Utilisez une belle bibliothèque Javascript, comme Prototype ou jQuery. Semble maintenant minable, mais ces cadres vous sauver tonnes du temps à long terme.

Dans les deux cadres, vous pouvez sélectionner cette div avec:

$('div.theTitle') 

Avec jQuery, vous pouvez faire:

$('div.theTitle').click(function() { 
    var title = $(this).text(); 
    var contentDiv = $(this).siblings('div.theContent'); 
    // Do something with contentDiv and the title 
}); 

Cela fera tous theTitle div ont un événement onClick qui fait quelque chose avec son div theContent associé.

+0

Juste un FYI: Vous pouvez raccourcir cela à: '$ (this) .siblings ('. TheContent');' ou plus court: '$ (this) .next ('. TheContent');' –

+0

Mise à jour post, merci:) – rjh

Questions connexes