Ich versuche, einen Knotenwert durch einen HTML-Inhalt zu ersetzen. Aber wenn ich das versuche, werden die HTML-Tags in der HTML-Seite anstelle des angewandten Stils angezeigt.Ersetzen von ChildNode-Werten durch HTML-Inhalt
<style>
.YellowSelection {
background: yellow;
}
</style>
var capturedText = 'test';
var changedText = '<span class="YellowSelection">test</span> Day';
htmlreplace(capturedText, changedText);
function htmlreplace(capturedText, changedText, element) {
var nodes = element.childNodes;
for (var n=0; n<nodes.length; n++) {
if (nodes[n].nodeType == Node.TEXT_NODE) {
var r = new RegExp(capturedText, 'gi');
console.log(nodes[n]);
nodes[n].textContent = nodes[n].textContent.replace(r, changedText);
} else {
htmlreplace(capturedText, changedText, nodes[n]);
}
}
}
Aktualisiert (Complete-Code).
<style>
.YellowSelection {
color: yellow;
}
</style>
function returnSelection() {
var capturedText;
var changedText;
capturedText = window.getSelection().toString().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
changedText = '<span class="YellowSelection">' + capturedText + '</span>';
htmlreplace(capturedText, changedText);
}
}
function htmlreplace(capturedText, changedText, element) {
if (!element) element = document.body;
var nodes = element.childNodes;
for (var n=0; n<nodes.length; n++) {
if (nodes[n].nodeType === 3) {
var r = new RegExp(capturedText, 'gi');
nodes[n].innerHTML = nodes[n].textContent.replace(r, changedText);
} else {
htmlreplace(capturedText, changedText, nodes[n]);
}
}
}
wo 'htmlreplace()' definiert? –
Ich habe den Code jetzt korrigiert. Ich mache mir mehr Gedanken über diese Zeile - nodes [n] .textContent = nodes [n] .textContent.replace (r, changedText); – locknies
Sie legen den Textinhalt fest, der den Textinhalt des angegebenen Knotens und aller seiner Nachkommen setzt oder zurückgibt. , ich denke, dass Sie für innerHTML sollten, wenn Sie das HTML-Element – Deep