• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

replace mit value aus Eingabefeld

Gwunderi

New member
Hallo zusammen,

Möchte aus einem Text alle Worte "König" mit "Prinz" ersetzen, funktioniert auch bestens. Wenn ich aber die zu ersetzenden Worte aus einem Eingabefeld auslesen will, klappt es nicht, es wird dann nur das erste Wort "König" ersetzt:

HTML:
<p id="p1">Es war einmal ein König, der hatte drei schöne Töchter und einen hässlichen Frosch. Der König war alt, die Töchter jung.</p>

Suchen:  <input type="text" id="suchen"><br><br>
Ersetzen: <input type="text" id="ersetzen" onkeydown="ersetzen(event)">

<script>
function ersetzen(event)
{if (event.keyCode == 13)
	{var x = document.getElementById("suchen").value;
	var y = document.getElementById("ersetzen").value;
	var alt = document.getElementById("p1").innerHTML;
	var neu = alt.replace(x, "<b>" + y + "</b>");
	document.getElementById("p1").innerHTML = neu;}}
</script>

Wenn man die zu ersetzenden Worte schon kennt, geht es ja mit /König/g:
Code:
var neu = alt.replace(/König/g , "<b>Prinz</b>");

Mit einer Variablen /x/g geht es aber nicht, habe alles mögliche versucht …

Wer weiss mir Rat? Danke schon mal
 
Zuletzt bearbeitet:
RegExp-Literale erlauben eben keine Variablen. ...
Dann erstell das RegExp-Objekt auf dem für Objekte üblichen Weg.

Lach, über dieses RegExp bin ich heute schon mal gestolpert, so steht es in meinem Word-Dokument (habe es wohl vor Jahren mal hingeschrieben):

RegExp - (für Suche usw.) verstehe ich nicht ganz:
http://www.w3schools.com/js/js_obj_regexp.asp
JavaScript RegExp exec Method

Also sollte ich mich da mal schlau machen, vielleicht verstehe ich heute etwas mehr - und sonst ist es schon gut, dass ich weiss, dass diese "RegExp-Literale" keine Variablen erlauben ...
wissen, was nicht geht, ist ja auch schon Wissen :)

Ich danke Dir vielmals, hat mir schon mal geholfen.
 
Code:
var regExp = new RegExp(document.getElementById("suchen").value, "g");

Wobei man jetzt im Suchen-Feld auch RegExp-Syntax verwenden kann. Kann jetzt ein Vorteil sein oder auch nicht. Wenn du das nicht erlauben willst, musst du vorher alle Sonderzeichen von RegExp maskieren:
Code:
var regExp = new RegExp(document.getElementById("suchen").value.replace(/([\\\+\*\?\[\^\]\$\(\)\{\}\=\!\|\.])/g, "\\$1"), "g");
 
Zurück
Oben