Quiero agregar un elemento a un textNode. Por ejemplo: tengo una función que busca una cadena dentro del textNode del elemento. Cuando lo encuentro, quiero reemplazarlo con un elemento HTML. ¿Hay algún estándar para eso? Gracias.JavaScript: Agregar elementos en textNode
Respuesta
No puede simplemente reemplazar la cadena, tendrá que reemplazar todo el elemento TextNode, ya que TextNode elements can't contain child elements en el DOM.
Por lo tanto, cuando usted encuentra su nodo de texto, generar su elemento de repuesto, vuelva a colocar el nodo de texto con una función similar a:
function ReplaceNode(textNode, eNode) {
var pNode = textNode.parentNode;
pNode.replaceChild(textNode, eNode);
}
Por lo que parece que quiere hacer, tendrá que romper aparte el Nodo de Texto actual en dos nuevos Nodos de Texto y un nuevo elemento HTML. He aquí algunos ejemplos de código para señalar que es de esperar en la dirección correcta:
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);
}
}
}
}
Tal jQuery habría hecho esto más fácil, pero es bueno entender por qué todas estas cosas funciona de la manera que lo hace.
¿Tiene algún ejemplo? Gracias. – thomas
- 1. Cambiar el valor de textNode
- 2. Cómo insertar un elemento textNode javascript en una nueva línea
- 3. Usar JavaScript insertBefore() para insertar antes de un TextNode?
- 4. Cómo agregar EventListener a elementos no dom en javascript?
- 5. Javascript para agregar un atributo personalizado a algunos elementos
- 6. Agregar elementos NSArray
- 7. JavaScript: agregar hijos al elemento
- 8. Agregar elementos en una lista de diccionarios
- 9. ¿Cómo agregar elementos en el menú emergente?
- 10. Agregar elementos a comboBox en WPF
- 11. Agregar elementos a Listview en jqueryMobile
- 12. Agregar elementos a ToolStrip en RunTime
- 13. Agregar elementos a JList en Swing Java
- 14. QListWidget ¿Agregar elementos personalizados en Qt?
- 15. Crear columnas en ListView y agregar elementos
- 16. Agregar elementos de una matriz
- 17. Sencha Touch agregar elementos dinámicamente
- 18. Agregar elementos al lienzo html5
- 19. ¿Agregar elementos a un ListView?
- 20. Agregar elementos de dos conjuntos
- 21. Cómo agregar el controlador de eventos con argumentos a una matriz de elementos en Javascript?
- 22. Agregar un archivo JavaScript
- 23. Adición de elementos HTML con JavaScript
- 24. Cómo intercambiar elementos HTML en javascript?
- 25. Eliminando elementos con Array.map en JavaScript
- 26. Crea elementos ul y li en javascript.
- 27. Cómo obtener elementos por clase en JavaScript?
- 28. Accediendo a elementos por tipo en javascript
- 29. ¿GetElementById funciona en elementos creados por javascript?
- 30. element.firstChild está devolviendo '<TextNode ...' en lugar de un Object en FF
¿Puede/desea usar jQuery? –
Lo siento, no puedo. Pero por cierto, muestre su solución a los otros muchachos ... – thomas
Ya tiene la función para buscar la cadena, ¿o también está preguntando sobre eso? – palswim