Je souhaite ajouter un élément à un textNode. Par exemple: J'ai une fonction qui cherche une chaîne dans le textNode de l'élément. Quand je le trouve, je veux le remplacer par un élément HTML. Y a-t-il une norme pour cela? Merci.JavaScript: Ajouter des éléments dans textNode
Répondre
Vous ne pouvez pas simplement remplacer la chaîne, vous devrez remplacer l'élément TextNode entier, puisque TextNode elements can't contain child elements dans le DOM.
Alors, quand vous trouvez votre nœud de texte, générer votre élément de remplacement, puis remplacez le nœud de texte avec une fonction similaire à:
function ReplaceNode(textNode, eNode) {
var pNode = textNode.parentNode;
pNode.replaceChild(textNode, eNode);
}
Pour ce, il semble que vous voulez faire, vous devrez briser séparer le nœud de texte actuel en deux nouveaux nœuds de texte et un nouvel élément HTML. Voici quelques exemples de code pour vous diriger, espérons dans la bonne direction:
function DecorateText(str) {
var e = document.createElement("span");
e.style.color = "#ff0000";
e.appendChild(document.createTextNode(str));
return e;
}
function SearchAndReplaceElement(elem) {
for(var i = elem.childNodes.length; i--;) {
var childNode = elem.childNodes[i];
if(childNode.nodeType == 3) { // 3 => a Text Node
var strSrc = childNode.nodeValue; // for Text Nodes, the nodeValue property contains the text
var strSearch = "Special String";
var pos = strSrc.indexOf(strSearch);
if(pos >= 0) {
var fragment = document.createDocumentFragment();
if(pos > 0)
fragment.appendChild(document.createTextNode(strSrc.substr(0, pos)));
fragment.appendChild(DecorateText(strSearch));
if((pos + strSearch.length + 1) < strSrc.length)
fragment.appendChild(document.createTextNode(strSrc.substr(pos + strSearch.length + 1)));
elem.replaceChild(fragment, childNode);
}
}
}
}
Peut-être que jQuery aurait fait cela plus facile, mais il est bon de comprendre pourquoi toutes ces choses fonctionne comme il le fait.
Avez-vous des exemples? Je vous remercie. – thomas
- 1. JavaScript TextNode
- 2. remplacer un textnode qui a des frères non textNode
- 3. ajouter des éléments VML (images) avec javascript
- 4. NSArray ajouter des éléments
- 5. ajouter dynamiquement des éléments de jquery ou javascript
- 6. Comment ajouter des attributs Javascript aux éléments ASP.NET RadioButtonList?
- 7. ajouter/supprimer des éléments dans une liste
- 8. Ajouter des éléments de modèle dans TinyMCE
- 9. Ajouter des éléments pairs dans la liste
- 10. Ajouter des sous-éléments dans TreeView
- 11. Supprimer mysterious <TextNode textContent = "\ n"> avec javaScript
- 12. se textNode d'un elementNode d'une page web via javascript
- 13. Utilisation de JavaScript insertBefore() pour insérer avant un TextNode?
- 14. Ajouter dynamiquement des éléments pliables
- 15. ajouter des éléments intégrés dans le plugin fckeditor
- 16. Remplacer/Ajouter plusieurs éléments DOM: Méthode efficace et robuste?
- 17. Masquage des éléments avec javascript
- 18. Ajouter des délimiteurs différents dans javascript toString() ..?
- 19. Zend_Form: Ajouter des éléments à boutons radio
- 20. Comment ajouter des éléments dynamiquement à QListWidget?
- 21. ajouter des éléments à WPF Grid
- 22. Ajouter des éléments à sous-ensemble récursive
- 23. Ajouter des éléments à un tableau?
- 24. BlackBerry - Ajouter des éléments à un ListField
- 25. Dynamiquement Ajouter des éléments à jQuery Sortable
- 26. Ajouter des éléments de IList à ObservableCollection
- 27. C# Listview ajouter des sous-éléments
- 28. Ajouter des éléments au contrôle Microsoft WinForm
- 29. Ajouter des éléments supplémentaires sur ComboBox DataSource
- 30. Ajouter des éléments à un ListView?
Pouvez-vous/voulez-vous utiliser jQuery? –
Désolé, je ne peux pas. Mais BTW, montrez votre solution aux autres gars ... – thomas
Vous avez déjà la fonction pour rechercher la chaîne, ou vous posez à ce sujet, aussi? – palswim