Problem mit Suchen & Ersetzen

Anima97

Mitglied
Hey,
ich arbeite gerade an einem kleinen Script, dass ein Wort in einem String durch ein neues Wort ersetzt. Leider geht meine Methode nicht so wie sie soll:

HTML:
<!DOCTYPE html>
<html>
	<head>
		<script type='text/javascript'>
		function SimpleReplace() {
			this.resetStr = function() {
				document.getElementById('str').value = '';
				document.getElementById('oldstr').value = '';
				document.getElementById('newstr').value = '';
			}
			this.selectStr = function() {
				document.getElementById('str').focus();
				document.getElementById('str').select();
			}
			this.replaceStr = function() {
				var str = document.getElementById('str').value;
				var oldstr = document.getElementById('oldstr').value;
				var newstr = document.getElementById('newstr').value;
				
				for (i = 0; i <= str.length; i++) {
					if (str.substring(i, newstr.length) == oldstr) {
						var str = str.replace(str.substring(i, newstr.length), oldstr);
					}
				}
				document.getElementById('str').value = str;
			}
		}
		
		var SR = new SimpleReplace();
		</script>
		<style type='text/css'>
		</style>
		<title>SimpleReplace</title>
	</head>
	<body>
		<form>
			Text:<br><textarea rows='10' cols='50' id='str'></textarea><br>
			<input type='text' id='oldstr'> ersetzen mit <input type='text' id='newstr'><br>
			<input type='button' value='Ersetzen' onclick='SR.replaceStr();'>
			<input type='button' value='Alles auswählen' onclick='SR.selectStr();'>
			<input type='button' value='Zurücksetzen' onclick='SR.resetStr();'>
		</form>
	</body>
</html>
 
Also erst mal deklarierst du innerhalb der Schleife die Variable "str" anstatt die von außen zu benutzen. Und ansonsten verstehe ich deinen Ersetzungscode nicht, bzw. ich habe nur kurz drauf geguckt.

Wie ist das?:
Javascript:
this.replaceStr = function() {
	var str = document.getElementById('str').value;
	var oldstr = document.getElementById('oldstr').value;
	var newstr = document.getElementById('newstr').value;
	
	str = str.replace(new RegExp(oldstr, 'g'), newstr);
	
	document.getElementById('str').value = str;
}
 
Hi

Deine for Schleife brauchste nicht. (Ergibt glaub ich auch keinen Sinn?)

Hab dir den Code mal so zusammengestellt das er funktioniert.

Sprich for Schleife raus und und den neuen String mit dem alten ersetzen mit dem RegExp-Objektes.

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script type='text/javascript'>
		var SR = new SimpleReplace();
		
		function SimpleReplace() {
			this.resetStr = function() {
				document.getElementById('str').value = '';
				document.getElementById('oldstr').value = '';
				document.getElementById('newstr').value = '';
			}
			this.selectStr = function() {
				document.getElementById('str').focus();
				document.getElementById('str').select();
			}
			this.replaceStr = function() {
				var str = document.getElementById('str').value;
				var oldstr = document.getElementById('oldstr').value;
				var newstr = document.getElementById('newstr').value;
				
				
				str = str.replace(new RegExp(oldstr, 'g'), newstr);	
				
				document.getElementById('str').value = str;
			}
		}
		
		</script>
		<style type='text/css'>
		</style>

<title>Untitled Document</title>
</head>

<body>
<form>
			Text:<br><textarea rows='10' cols='50' id='str'></textarea><br>
			<input type='text' id='oldstr'> ersetzen mit <input type='text' id='newstr'><br>
			<input type='button' value='Ersetzen' onclick='SR.replaceStr();'>
			<input type='button' value='Alles auswählen' onclick='SR.selectStr();'>
			<input type='button' value='Zurücksetzen' onclick='SR.resetStr();'>
		</form>
</body>
</html>
 

Neue Beiträge

Zurück