2010-04-02 8 views
1

Je suis en train de voir comment trouver une étiquette qui a été ajouté dynamiquement dans une table comme ceci:Trouver une balise ajouté dynamique avec javascript

ParentTag= document.getElementById('parentdiv'); 
var newTag = document.createElement('div'); 
newTag.innerHTML="<span class="ImNew"></span>" 
ParentTag.appendChild(newTag); 

Comment pourrai-je trouver cette balise dans javascript , ne pas pencher vers l'utilisation de jquery donc pas vivre recommandations s'il vous plaît .. Essayer de trouver ce nouveau tag en javascript strictement.

L'étiquette que je fais allusion est la durée tag

Répondre

1

Cela dépend des autres éléments présents dans l'élément. Vous pouvez par exemple obtenir toutes les balises span dans l'élément et filtrer ceux avec un nom de classe spécifique:

var parentTag = document.getElementById('parentdiv'); 
var spans = parentTag.getElementsByTagname('SPAN'); 
var filtered = []; 
for (var i=0; i<spans.length; i++) { 
    if (spans[i].className === 'ImNew') filtered.push(spans[i]); 
} 

S'il n'y a qu'une seule balise span avec ce nom de classe dans l'élément, le tableau filtered cotnains maintenant référence à cet élément.

+0

bien quand je regarde la source d'affichage, cet élément span ajouté n'est pas là, mais le contenu à l'intérieur est affiché sur la page, alors êtes-vous sûr que je serais en mesure de trouver Il suffit de parcourir les balises span – Jake

+0

@Jake c'est votre navigateur qui vous montre la source de la page plutôt que le contenu actuel du DOM. Si vous l'avez inséré, il sera là. –

+0

Vous pouvez utiliser Firebug pour voir le contenu réel du DOM en temps réel, ce qui serait d'une grande aide. –

2

Vous pouvez donner à votre nouvelle balise un ID lors de sa création:

ParentTag= document.getElementById('parentdiv'); 
var newTag = document.createElement('div'); 
newTag.setAttribute('id','myNewID'); 
newTag.innerHTML="<span class="ImNew"></span>" 
ParentTag.appendChild(newTag); 

Puis, plus tard, il suffit d'utiliser cet identifiant pour le trouver :

var newTag = document.getElementById('myNewID'); 
+0

désolé, si je vous induis en erreur, mais je voudrais essayer de trouver cette balise span – Jake

+0

OK, n'était pas clair sur ce point. Pouvez-vous toujours utiliser la même technique de trouver par ID, ou est-ce pas bon pour vos besoins? –

+0

non, l'id n'est pas bon dans cette situation – Jake

1

Comme d'autres l'ont dit, pourquoi ne pas simplement garder une trace de celui-ci ou lui donner un id si vous allez en avoir besoin plus tard? Mais de toute façon, voici comment vous pourriez faire une recherche manuelle (recherche de l'arrière vers l'avant que vous ajoutez les nouveaux éléments à la fin).

var parent = document.getElementById("parentdiv") 
for (var i = parent.childNodes.length - 1; i >= 0; i--) 
{ 
    var el = parent.childNodes[i]; 
    if (el.nodeType == 1 && 
     el.nodeName.toLowerCase() == "div" && 
     el.firstChild && 
     el.firstChild.nodeName.toLowerCase() == "span" && 
     el.firstChild.className = "ImNew") 
    { 
     // el.firstChild is what you want 
    } 
} 
Questions connexes