Je souhaite utiliser Javascript pour parcourir en boucle un ensemble d’éléments et créer une liste d’étiquettes pour chacun d’entre eux. Par conséquent, si l’ensemble d’éléments était comme suit:
Title
Subheading
Paragraph of text...
Cela me donnerait ce qui suit:
- h1
- h2
- p
- Comment obtenir innerText de chaque élément au sein de plusieurs tables? (Extension chrome)
- Comment encapsuler une section de texte en javascript?
- Est-ce un double document prêt?
- DOM ne répondant pas à jquery evers après la fonction de chargement
- Remplacement des méthodes DOM3 getUserData / setUserData
Est-il possible pour jQuery / Javascript de renvoyer le type d’un élément sous forme de chaîne, et si oui, comment pourrais-je m’y prendre?
C’est loin d’être le morceau de code le plus propre que j’ai jamais créé, mais ça marche:
function generateList(rootElement) { var rootElementItem = $("" + rootElement.get(0).tagName + " "); if (rootElement.children().size() > 0) { var list = $("
"); rootElement.children().each(function() { list.append(generateList($(this))); }); rootElementItem.append(list); } return rootElementItem; } var listOfElements = generateList($("body")); $("body").append($("
").append(listOfElements));
Démo: http://jsfiddle.net/jonathon/JvQKz/
Il s’appuie sur la réponse this.tagName
qui a été donnée précédemment, mais il vérifie également la this.tagName
d’enfants. De cette façon, il construira une vue hiérarchique de l’élément donné. La méthode ne génère pas la
englobante, elle ne peut donc être ajoutée qu’à une balise existante.
J’espère que cette solution simple aide: http://jsfiddle.net/neopreneur/n7xJC/
-html-
Title
Subheading
Paragraph of text...
-js-
$(function(){ $('body *').each(function(){ // append a 'ol' to body in order to output all tag names if(!$(this).parents('body').find('ol').length){ $('body').append('
'); } // output the name of the tag (list item) $('ol').append('' + this.tagName.toLowerCase() + ' '); }); });
Cela fonctionne si vous avez un document HTML correctement formé avec une balise body.
Exemple
$('
').append(function(index, html){ var ret = $(''); $('body>*').each(function(i, el) { ret.append( $('').html(this.tagName.toLowerCase()) ); }); return ret.html(); }).appendTo('body');