PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JavaScript: ReplaceText-Methode parametrisieren


Geldmann3
2022-06-04, 13:22:36
Hallo zusammen,

ich habe eine Methode zum Ersetzen von Text im gesamten HTML-Dokument:

function replaceText(node) {
if (node.nodeType == 3) {
node.data = node.data.replace(/Benutzer/g, "User");
}
if (node.nodeType == 1 && node.nodeName != "SCRIPT") {
for (var i = 0; i < node.childNodes.length; i++) {
replaceText(node.childNodes[i]);
}
}
}

replaceText(document.body);


Diese Methode ersetzt erfolgreich "Benutzer" mit "User".

Nun habe ich versucht, diese Methode zu parametrisieren:

function replaceText(node, toReplace, replacement) {
if (node.nodeType == 3) {
node.data = node.data.replace(toReplace, replacement);
}
if (node.nodeType == 1 && node.nodeName != "SCRIPT") {
for (var i = 0; i < node.childNodes.length; i++) {
replaceText(node.childNodes[i]);
}
}
}

replaceText(document.body, /Benutzer/g, "User");

Dies funktioniert allerdings nicht.
Könnte mir jemand erklären, warum?

Danke!

AintCoolName
2022-06-04, 14:33:20
Die Funktion ruft sich selbst auf in der for schleife, aber da Fehlen die Parameter , oben sind die dann undefind.

So gehts:

function replaceText(node, toReplace, replacement) {
if (node.nodeType == 3) {
node.data = node.data.replace(toReplace, replacement);
}
if (node.nodeType == 1 && node.nodeName != "SCRIPT") {
for (var i = 0; i < node.childNodes.length; i++) {
replaceText(node.childNodes[i],toReplace, replacement);
}
}
}

Geldmann3
2022-06-04, 14:42:11
Uhh, was für ein bescheuerter Fehler. ;D
Ich hat's echt nicht gesehen, seit gestern Abend.^^
Sowas wie Java hätte mir einen Compile-Error oder ähnliches gegeben.

Vielen Dank!

Misda
2022-07-29, 08:54:52
Uhh, was für ein bescheuerter Fehler. ;D
Ich hat's echt nicht gesehen, seit gestern Abend.^^
Sowas wie Java hätte mir einen Compile-Error oder ähnliches gegeben.

Vielen Dank!

Kurze Frage, wäre sowas nicht irgendwie leichter zu nutzen? Konnte es jetzt allerdings nicht testen :smile:


function replaceText(node, search, replace) {
if (node.nodeType == 3) {
node.data = node.data.replace('/' + search + '/g', replace);
}
if (node.nodeType == 1 && node.nodeName != 'SCRIPT') {
for (var i = 0; i < node.childNodes.length; i++) {
replaceText(node.childNodes[i], search, replace);
}
}
}
replaceText(document.body, 'Benutzer', 'User');