PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit Javascript/Textarea


Gil-galad
2005-01-01, 14:55:12
Also es geht um folgendes:

Ich möchte eine Liste in eine Textarea einfügen. Ich habe mir die Funktion von VBulletin angeschaut und etwas abgeändert. Eine Liste einfügen geht auch ohne Probleme. Sobald ich aber eine 2. Liste einfügen will, geht nichts mehr. Man kann zwar auf den Knopf drücken, aber die Funktion wird nicht aufgerufen.


function liste(theform)
{
// Einfügen von einer Aufzaehlung
liste = "";
var eintrag = "initial";
while( (eintrag != "") && (eintrag != null) )
{
eintrag = prompt("Listenpunkt eingeben, Liste per CANCEL beenden","");
if( (eintrag != "") && (eintrag != null) )
{
liste = liste + "" + eintrag + "";
}
}
liste = liste + "";
theform.text.value += liste;
theform.text.focus();
}


<input type="Button" value="Liste" onclick="liste(this.form)">

Hat jemand ne Idee, wieso das nur einmal geht?

Gil-galad
2005-01-02, 13:01:50
Hat wirklich keiner einen Tip?

M@tes
2005-01-02, 13:40:13
Ich kenne mich zu wenig mit JS aus, aber ich denke, da könnte es hacken:
theform.text.value += liste;
Statt die Liste anzuhängen, ersetzt er sie.

Gil-galad
2005-01-02, 13:46:21
Ich kenne mich zu wenig mit JS aus, aber ich denke, da könnte es hacken:
theform.text.value += liste;
Statt die Liste anzuhängen, ersetzt er sie.

Nein das stimmt so schon.

theform.text.value += liste; <==> theform.text.value = theform.text.value+liste;

Gil-galad
2005-01-04, 15:33:15
*push*

M@tes
2005-01-04, 15:44:52
Wie gesagt, ich bin ein JS Noob, aber was macht folgendes für einen SInn?
while( (eintrag != "") && (eintrag != null) )
--> Unendlichschleife, solang Bedingung true bzw 1 ist.

Wozu machst du dann noch eine Bedingung?:
if( (eintrag != "") && (eintrag != null) )

Genauso frage ich mich, was folgendes bringt?:
onclick="liste(this.form)" --> this.form
Wofür muss das den übergeben werden? :|

Ohne eine HTML Datei kann ich da nichts mit Anfangen,...
Nur Vermutungen anstellen. Lad mal eine Beispieldatei hoch und man kann weiter drüber reden.

PS: Mach mal Fehlersuche mittels printausgabe.
Sind alle Variablen wirklich gegeben?
Oder alles löschen und mal Stück für Stück hinzufügen und austesten.
Liegt es an der Schleife? Geht es ohne Schleife (Nur ein Versuch, auch wenns nur einen Listeneintrag ergibt)?

EDIT: Oder hier:
value="Liste"
Hier schreibst du Liste mit grossem L im JS aber alles klein. Stimmt das auch so?

Gil-galad
2005-01-04, 15:53:37
Wie gesagt, ich bin ein JS Noob, aber was macht folgendes für einen SInn?
while( (eintrag != "") && (eintrag != null) )
--> Unendlichschleife, solang Bedingung true bzw 1 ist.

Solange wie was eingegeben wurde (!="") und nicht auf Abbrechen (!=null) geklickt wurde (beim vorherigen Schleifendurchlauf), solange werden die Einträge der Liste hinzugefügt.

Wozu machst du dann noch eine Bedingung?:
if( (eintrag != "") && (eintrag != null) )
Falls etwas eingegeben wurde, wird dies der Liste hinzugefügt, ansonsten wird logischerweise die Schleife beim nächsten Durchlauf abgebrochen, da eintrag=="" bzw ==null.

Genauso frage ich mich, was folgendes bringt?:
onclick="liste(this.form)" --> this.form
Wofür muss das den übergeben werden? :|
Damit er weiss, in welches Formular er die Liste einfügen soll?

Ohne eine HTML Datei kann ich da nichts mit Anfangen,...
Nur Vermutungen anstellen. Lad mal eine Beispieldatei hoch und man kann weiter drüber reden.
Nö bringt auch nichts. Da in der HTML-Datei der selbe Code steht.

PS: Mach mal Fehlersuche mittels printausgabe.
Sind alle Variablen wirklich gegeben?
Oder alles löschen und mal Stück für Stück hinzufügen und austesten.
Liegt es an der Schleife? Geht es ohne Schleife (Nur ein Versuch, auch wenns nur einen Listeneintrag ergibt)?
Anscheinend hast Du Dir mein Problem nicht genau durchgelesen. Wenn ich das 1. mal auf den Button klicke, kann ich problemlos eine Liste einfügen. Nur wenn ich nochmal klicke, geht es nicht.

EDIT: Oder hier:
value="Liste"
Hier schreibst du Liste mit grossem L im JS aber alles klein. Stimmt das auch so?
Ja. Am besten schaust Du Dir mal Formulare/Buttons (http://de.selfhtml.org/html/formulare/index.htm) an ;)

Btw ich möchte Dich ja nicht persönlich irgendwie angreifen, aber warum meldest Du Dich in diesem Thread, wenn Du eh keine Ahnung davon hast? :|

M@tes
2005-01-04, 16:23:51
Solange wie was eingegeben wurde (!="") und nicht auf Abbrechen (!=null) geklickt wurde (beim vorherigen Schleifendurchlauf), solange werden die Einträge der Liste hinzugefügt.
Meine Aussage war eher in kombination mit der folgenden gedacht gewesen, bezüglich if Bedingung. Wieso man diese 2mal eingebaut hat.
Ok klar. Einwenig doof, aber wohl in JS nicht anders realisierbar^^

Damit er weiss, in welches Formular er die Liste einfügen soll?
Dazu müsste ich den ganzen QUelltext sehen, auch wenn es nur eine Beispiel HTML Datei ist.

Nö bringt auch nichts. Da in der HTML-Datei der selbe Code steht.
Es geht um das drumherum,...
Ausserdem: Wenn jemand will, das ihm geholfen wird, sollte ers anderen so leicht wir möglich machen. Z.B. indem man eine Beispieldatei schreibt die man dann per copy und paste schnell selbst erstellen kann. Ich fühle mich nciht dazu berufen, dies selber zu machen. 1. Sollte dies im Interesse des Verfassers sein und 2. Kann der Fehler auch wo anders sein, als im geposteten Teil sein. Klingt scheisse, aber man sollte sich dies wirklich angewöhnen.

Anscheinend hast Du Dir mein Problem nicht genau durchgelesen. Wenn ich das 1. mal auf den Button klicke, kann ich problemlos eine Liste einfügen. Nur wenn ich nochmal klicke, geht es nicht.
Ok Sorry, beim ersten Post hab ich dran gedacht gehabt, aber beim 2. nicht mehr - Mein Fehler.

Ja. Am besten schaust Du Dir mal Formulare/Buttons an
Brauche ich nicht - kann ich. Hab schon ein eigenes Forum geschrieben,...
www.freefaq.ch ist imod ie offizielle Seite. Hab allerdings keien Zeit mehr die Seite weiter zu pflegen. www.freefaq.ch/cgi-bin/index.cgi war meine alte halb fertige Beta Page^^
Man sieht da auch, das ich einiges mit JS gearbeitet habe.
Beispiel: http://www.freefaq.ch/cgi-bin/index.cgi?sub=email
ein gutes Beispiel ist beim posten von Beiträgen im FOrum, wobei man da allerdings registriert sein muss. Wenn du willst, kanst dich ja probeweise registrieren.
Ich denke ich kann erst nach meinem Abschluss im Sommer weiter an der Page arbeiten.

Btw ich möchte Dich ja nicht persönlich irgendwie angreifen, aber warum meldest Du Dich in diesem Thread, wenn Du eh keine Ahnung davon hast?
1. JS ähnelt einwenig zu Perl
2. Ich kann JS insofort nicht, das ich kaum eigene Sachen schreiben kann. Aber das Umschreiben bzw kombinieren fertiger kein bis kaum ein Problem darstellt. Ich Probiere sollang rum, bis es funtzt^^ Mit einwenig logischem denken, ist das meist keine grosse Sache.
Wenn ich ein praktisches Beispiel habe, sollte es kein Problem darstellen.
Genauso weiss ich, wie ich mögliche Fehlerquellen nacheinander ausschliessen kann. Ich verstehe den Aufbau von JS, kenne aber nicht alle Befehle auswendig und einige Funktionen derer

Gil-galad
2005-01-04, 20:09:19
Meine Aussage war eher in kombination mit der folgenden gedacht gewesen, bezüglich if Bedingung. Wieso man diese 2mal eingebaut hat.
Ok klar. Einwenig doof, aber wohl in JS nicht anders realisierbar^^
Anscheinend hast Du denn Sinn der Schleife und der if-Anweisung noch nicht ganz begriffen. Das hat nichts mit JS zu tun. So könnte es auch in C++, Java, ... aussehen.


Dazu müsste ich den ganzen QUelltext sehen, auch wenn es nur eine Beispiel HTML Datei ist.
Wieso? Der restliche Quelltext ist irrelevant. Andere JS-Funktionen funktionieren ja auch ohne Probleme. Und das der Code grundsätzlich geht, sieht man daran, dass man eine Liste einfügen kann. Nur eine 2. Liste geht eben nicht. Der Fehler muss irgendwo in der Funktion liegen, und nicht im HTML-Quelltext.


Es geht um das drumherum,...
Ausserdem: Wenn jemand will, das ihm geholfen wird, sollte ers anderen so leicht wir möglich machen. Z.B. indem man eine Beispieldatei schreibt die man dann per copy und paste schnell selbst erstellen kann. Ich fühle mich nciht dazu berufen, dies selber zu machen. 1. Sollte dies im Interesse des Verfassers sein und 2. Kann der Fehler auch wo anders sein, als im geposteten Teil sein. Klingt scheisse, aber man sollte sich dies wirklich angewöhnen.
Er kann nicht woanders liegen.


Ok Sorry, beim ersten Post hab ich dran gedacht gehabt, aber beim 2. nicht mehr - Mein Fehler.
Kann passieren.


Brauche ich nicht - kann ich. Hab schon ein eigenes Forum geschrieben,...
www.freefaq.ch ist imod ie offizielle Seite. Hab allerdings keien Zeit mehr die Seite weiter zu pflegen. www.freefaq.ch/cgi-bin/index.cgi war meine alte halb fertige Beta Page^^
Man sieht da auch, das ich einiges mit JS gearbeitet habe.
Beispiel: http://www.freefaq.ch/cgi-bin/index.cgi?sub=email
ein gutes Beispiel ist beim posten von Beiträgen im FOrum, wobei man da allerdings registriert sein muss. Wenn du willst, kanst dich ja probeweise registrieren.
Ich denke ich kann erst nach meinem Abschluss im Sommer weiter an der Page arbeiten.
Hat zwar nicht wirklich was mit dem Thema zu tun, aber OK.




1. JS ähnelt einwenig zu Perl
2. Ich kann JS insofort nicht, das ich kaum eigene Sachen schreiben kann. Aber das Umschreiben bzw kombinieren fertiger kein bis kaum ein Problem darstellt. Ich Probiere sollang rum, bis es funtzt^^ Mit einwenig logischem denken, ist das meist keine grosse Sache.
Wenn ich ein praktisches Beispiel habe, sollte es kein Problem darstellen.
Genauso weiss ich, wie ich mögliche Fehlerquellen nacheinander ausschliessen kann. Ich verstehe den Aufbau von JS, kenne aber nicht alle Befehle auswendig und einige Funktionen derer

MadMan2k
2005-01-04, 22:00:00
das was da steht ist eigentlich richtig - was sagt die JS Konsole dazu?

Gil-galad
2005-01-04, 22:22:19
das was da steht ist eigentlich richtig - was sagt die JS Konsole dazu?

Die JS-Konsole im Firefox sagt mir leider nix dazu. Weder Fehler noch sonst was.

MadMan2k
2005-01-04, 23:36:00
also bei mir gabs nen Fehler :D

und zwar überschreibst du in dieser Zeile die Funktion liste:
liste = "[LISTE]";

M@tes
2005-01-05, 01:06:43
@MadMan2k:
Mhh das könnte sein.
Sowas kann aber auch nur im JS passieren.

Warum ich eigendlich noch hier schreibe:
Wenn du schon+= benutzt, benutze es überall :wink:
Nurmal so am Rande...

clm[k1]
2005-01-05, 09:39:41
also bei mir gabs nen Fehler :D

und zwar überschreibst du in dieser Zeile die Funktion liste:
liste = "[LISTE]";

Oh Pein und Agonie!
Sowas geht wohl wirklich nur in JavaScript...

jetzt wo du's sagst, fällt mir auch auf, das die Variable "liste" gar nicht als solche deklariert wird!

Und wo wir schon dabei sind, werbung für selbstgeschriebene Foren zu machen: www.burgenlandgamer.com/forum/
da kann man übrigens auch als gast posten (aber nur im Offtopic und Lan-Ankündigungen forum)

Obwohl man zugegebener Maßen als einfacher Benutzer ein forum nur schlecht beurteilen kann - das geht erst wenn man einblick in die administrativen möglichkeiten eines boards erhält. Da diese meist genauso umfangreich (oder sogar umfangreicher) sind wie der rest des boards. Vor allem solche dinge wie verschieben, splitten und mergen von topics, die zwar administrativer natur sind, aber aufgrund der bedienbarkeit nicht wirklich ins admin-system gehören...

aber da das eigentlich hier nicht zum thema gehört, hör ich mal lieber auf ;)


gruß
clm[k1]

M@tes
2005-01-05, 11:28:29
Ich wollte eigendlich auch keine Werbung für mein Forum machen.
Der Link ist nciht offiziel und wird praktisch nciht mehr besucht.
Ich wollte nur zeigen, das auch wenn ich JS kaum kenne, paar gute Sachen geschrieben habe.
Das Forum wird eh irgendwann nochmal komplett neu aufgesetzt^^

Gil-galad
2005-01-05, 14:48:27
also bei mir gabs nen Fehler :D

und zwar überschreibst du in dieser Zeile die Funktion liste:
liste = "[LISTE]";

:massa: Mein Held :massa:

Das wars. Danke. Komisch das mit meine JS-Konsole den Fehler ned gezeigt hat.