BBCodes + Übergabe mehrere Variablen in Funktion

shorty

Erfahrenes Mitglied
Guten Tag,

ich bin zurzeit dabei, eine Funktion in Javaskript zu erstellen, mit welcher ich allgemein BBCodes für verschiedene Formulare und deren Felder einfügen möchte.

Dazu verwende ich folgenden Code (dies ist nur ein Auszug aus meinem Code):

Code:
function bbcode (action, formular, feld) {

	if(action == "url") {
		
		var urlBBCode = "";
		
		thisURL = prompt("Bitte gib den Link zu der Homepage an", "http://");
		thisTitle = prompt("Bitte gib den Namen des Links an", "Linkname");
		urlBBCode = ""+thisTitle+"";
		
		if(thisURL == "" || thisURL == "null" || thisURL == "http://") {
			eval("document." + formular + "." + feld + ".value = document." + formular + "." + feld + ".value";);
		} else {
			eval("document." + formular + "." + feld + ".value = document." + formular + "." + feld + ".value" + urlBBCode;);
		}
		
	}

}

Ich habe erfahren, dass man Objekte vorher evaluieren muss. Habe versucht, dies zu tun, aber es wird mir trotzdem noch gesagt, dass ein Objekt erwartet wird bzw. "formular" nicht definiert ist.

ich übergebe die Funktion beispielsweise mit "bbcode('url', 'news', 'text');

Hat jemand von euch vielleicht eine Idee?

Danke schonmal im Voraus dafür
 
Code:
...
eval("document." + formular + "." + feld + ".value = document." + formular + "." + feld + ".value";);
...
Diese Code-Zeile ist extrem sinnlos. Ich weiß ja nicht, was du meinst damit zu erreichen, aber du weißt hier dem Wert eines Forumlarfeld seinen den aktuelle Wert des gleichen Feldes zu und das ohne etwas zu ändern. Das kannst du auch gleich weglassen.
Code:
urlBBCode = ""+thisTitle+"";
Hier ist es unnötig eine String-Verkettung zu machen. thisTitle ist per Definition ein String und selbst wenn nicht würde die Variable automatisch, wenn nötig, von Javascript dazu gemacht. "urlBBCode = thisTitle;" reicht also voll.
Code:
...
if ( ... thisURL == "null") ...
...
Wenn schon muss das "null" ohne Anführungszeichen stehen. "null" ist nämlich das leere Objekt in Javascript. So wie es jetzt ist suchst du nach einem String "null" und der wird nur drin stehen, wenn der User zufällig "null" eingegeben hat und nicht, wenn er gar nichts eingegeben hat (alles gelöscht hat) so wie du vielleicht meinst.
Ich habe erfahren, dass man Objekte vorher evaluieren muss. Habe versucht, dies zu tun, aber es wird mir trotzdem noch gesagt, dass ein Objekt erwartet wird bzw. "formular" nicht definiert ist.
Da hat dir jemand einen Bären aufgebunden. Javascript sieht für sowas schon eine etwas andere Schreibweise vor:
Javascript:
document.forms['formularname'].elements['feldname'].value = 'blubb';
Trotzdem sehe ich in deinem Code nichts, was dirket falsch wäre. Es sollte eigentlich so funktionieren. Ich kann dir nur empfehlen einen Blick in die Javascript-Konsole deines Browsers zu werfen. Da siehst du nämlich evtl. Fehlermeldungen und kannst darauf reagieren.
 
Zuletzt bearbeitet:
Vielen Dank für die Hilfe und für die Tipps. Klappt wunderbar.

Werde mich in Zukunft daran halten, vielen Dank.
 

Neue Beiträge

Zurück