2009-08-20 10 views
1

J'ai un span dans une longue section de HTML; je l'ai fait la mise en surbrillance des termes en trouvant mon texte et l'enveloppant avec une portée qui rend le texte évident pour l'utilisateurAjoute le texte Javascript

<span id="MySpan" style="background-color:yellow">Some Text</span> 

Le problème que j'ai est que l'ajout de la mise en forme est facile s'ils changent les termes de recherche i besoin de supprimer la première recherche; idéalement sans rafraîchir la page.

Mon but est de supprimer l'étendue (et avec elle la mise en forme) mais conserver le texte.

Je peux enlever l'envergure assez facilement avec removeChild; bien que cela perde tout le texte. Ce que je ne peux pas comprendre, c'est comment garder le innerHTML de la durée; ma pensée originale était de l'ajouter après la durée afin que mon processus soit quelque chose comme ça.

var OriginalText = MySpan.InnerHTML(); 
var myDiv = document.getElementByID("MySpan"); 
-- Something here to append the text after the original span -- 
myDiv.ParentNode.removeChild(myDiv); 

Im dans Internet Explorer atterrit si cela rend la vie plus facile.

Répondre

5

En supposant que la durée contiendra uniquement le texte:

var span = document.getElementById('MySpan'); 
var text = span.firstChild; 
var parent = span.parentNode; 
parent.replaceChild(text, span); 
+0

excellent travaillé première fois. Merci – u07ch

0

Vous pouvez utiliser css pour cacher les données sans enlever la durée elle-même ajouter que le css « display: none » dans l'intervalle attribut « style ».

utilisation css

display: none; 

et puis remplacer les données en utilisant

parentNode.replaceChild(searchstring, span) 
Questions connexes