Dans un fichier xhtml, je souhaite mettre en évidence le texte entre deux balises à fermeture automatique s1 et s2 dont l'attribut "ind" a la même valeur. Par exemple. <s1 ind="1"/>
et <s2 ind="1" />
Ex. <html>
<body>
<a>
<b>
Certains <s1 ind="1"/> text
></b>
<c>
données <s2 ind="1"/>
ici </c>
</a>
</body>
</html>
Je veux "données texte" pour obtenir en surbrillance. Est-il possible de réaliser en utilisant javascript/jquery? Je pourrais avoir beaucoup de telles paires de balises à fermeture automatique s1 et s2 avec une valeur unique pour "ind" pour la paire, indiquant que le texte à l'intérieur d'elles doit être mis en évidence.Mettre en surbrillance le texte entre les balises personnalisées
Répondre
Il n'y a pas de "balises personnalisées" en (X) HTML. Vous ne pouvez pas juste créer des tags. Ils peuvent fonctionner dans certains navigateurs, mais ce n'est pas quelque chose que vous devriez compter. Utilisez des balises "normales" telles que div
et span
avec une classe.
EDIT: Ok, je pense que je reçois ce que vous voulez maintenant. Cependant, vous ne pouvez toujours pas utiliser des éléments personnalisés ni ceux qui se ferment automatiquement, surtout si vous devez prendre en charge IE, car il ne prend pas en charge non plus. Vous aurez besoin d'utiliser des éléments vides au lieu, tels que:
<html><body><a><b>Some <span id="s1-1"></span> text></b> <c>data <span id="s2-1"></span>here</c> </a></body></html>
Ce que vous devez faire est ensuite parcourir l'arborescence du document en commençant par <span id="s1-1"></span>
et se terminant par <span id="s2-1"></span>
et « envelopper » tous nœuds texte trouvé sur le chemin avec span
s et une classe que vous pouvez utiliser pour surligner.
Quelque chose comme ça (non testé, du haut de ma tête et très probablement tort parce que je suis fatigué):
function wrapUntil(element, nr) {
if (element.id === "s2-" + nr)
return;
if (element.nodeType === 3) {
var span = document.createElement("span");
span.className = "highlight-" + nr;
element.parentNode.replaceChild(span, element);
span.appendChild(element);
element = span;
} else {
var child = element.firstChild;
if (child) {
wrapUntil(child, nr);
}
}
var sibling = element.nextSibling();
if (sibling)
wrapUntil(sibling, nr);
else
wrapUntil(element.parentNode(), nr);
}
wrapUntil(document.getElementById("s1-1"), "1");
BTW, selon le lieu et la façon dont vous obtenez vos données, cela peut être quelque chose vous devriez faire côté serveur au lieu de JavaScript.
Les balises personnalisées à fermeture automatique sont simplement un indicateur pour le texte à mettre en surbrillance qui peut s'étendre à travers d'autres balises html. Si j'ai une paire d'étiquettes d'envergure à fermeture automatique avec le même identifiant/autre attribut possible. Existe-t-il un moyen de mettre en évidence le texte entre les balises span ayant la même valeur d'identifiant (bien que id doit être unique). Je suis plus précis dans l'utilisation des étiquettes de fermeture automatique car il pourrait y avoir d'autres étiquettes entre le texte à mettre en évidence. – Rachel
Merci. Je vais essayer ça. – Rachel
Pour le xhtml avec les balises span «s1-1» et «s2-1» que vous avez montrées, pouvez-vous montrer un exemple de format de sortie avec des balises span pour la mise en surbrillance. Cela m'aidera à comprendre ce que vous essayez de faire. – Rachel
au lieu d'utiliser vos « balises personnalisées » vous devez utiliser un span
ou div
avec une classe nommée highlight
:
<span class="highlight">This text is highlighted</span>
avec CSS, vous pouvez formater votre texte en surbrillance comme vous le voulez:
.highlight { background-color:yellow; font-weight:bold }
avec jQuery vous pouvez ajouter ou supprimer la classe highlight
:
$('span').addClass('highlight')
$('span').removeClass('highlight')
EDIT: maintenant j'ai votre problème.
La réponse est non, vous ne pouvez pas hightlight un texte couvrant accross autres balises html, comme ceci:
This <b>code <span class="highlight">will</b> not</span> work
Vous devez fermer la balise span avant </b>
et l'ouvrir à nouveau après:
This <b>code <span class="highlight">will</span></b>
<span class="hightlight"> work</span> very well.
Avec la balise span, je dois m'assurer que le texte à mettre en surbrillance doit se trouver dans les balises de début et de fin de plage. Dans mon cas, le texte à mettre en surbrillance peut comporter d'autres balises qui peuvent ne pas être fermées dans l'intervalle. Je veux avoir des étiquettes à fermeture automatique pour indiquer mon texte à mettre en évidence. Existe-t-il un moyen de mettre en évidence le texte entre deux balises span à fermeture automatique ayant la même valeur pour certains attibute say id (bien que id devrait être unique)/custom attibute? – Rachel
Y at-il un moyen de remplir les balises span pour tous les nœuds de texte entre toutes les paires s1, s2 avec le même "ind". c'est-à-dire
- 1. Mettre en surbrillance/Mettre en forme les zones de texte
- 2. Récupérer le texte entre les balises A
- 3. Mettre en surbrillance le texte du complément Visual Studio 2008
- 4. Mettre le texte en surbrillance dans la boîte aux messages
- 5. Outil pour entourer ou mettre en surbrillance le texte en surbrillance
- 6. Ajout de balises <span> à tous les nœuds de texte entre les balises personnalisées à fermeture automatique
- 7. Obtenir du texte entre les balises complexes en PHP
- 8. Preg texte de correspondance en php entre les balises html
- 9. Sélecteur basé sur le texte entre les balises, dans Jquery
- 10. Vim - mettre en surbrillance les lignes modifiées
- 11. Comment mettre en surbrillance le texte dans une zone de texte dans un programme Winforms C#?
- 12. Comment mettre en surbrillance seulement le texte sur le vol stationnaire, pas les espaces? (javascript)
- 13. Comment mettre en surbrillance le tabbaritem
- 14. mettre en surbrillance le mot sur android
- 15. mettre en évidence les balises HTML (ouvert/fin) dans Eclipse
- 16. mettre un texte en surbrillance dans la vue Web
- 17. NSMenuItem Champ de texte Mettre en surbrillance Problème
- 18. Mettre en surbrillance du texte dans un contrôle Webbrowser .net
- 19. GNU emacs: paramétrer les raccourcis clavier pour mettre le texte en surbrillance avec la touche majuscule
- 20. OS X Obtenez le texte en surbrillance
- 21. Sélectionnez le texte, à l'exception des balises HTML
- 22. Comment mettre en forme du texte entre des balises xsl: text?
- 23. Mise en surbrillance de texte modifiable
- 24. Comment récupérer le texte entre deux balises html avec C#?
- 25. Mettre en surbrillance du texte en tapant une zone de texte dans asp.net
- 26. Pouvez-vous mettre des balises de script entre les balises php?
- 27. Rechercher et mettre en surbrillance le texte en PDF pour IPad
- 28. Ajout de balises personnalisées dans Wordpress
- 29. preg_replace les données entre les balises html
- 30. Mettre en surbrillance le code de la base de données
avez-vous finalement trouvé la solution? J'en ai besoin aussi. – ehsan