• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

stringproblem

Status
Für weitere Antworten geschlossen.

Five-O

Neues Mitglied
Hallo,
ich bin gerade dabei ein kleines chatprogramm zu schreiben,
der html-code funktioniert bereits aber die javascript-einbindung mit einer funktion, die verschiedene variablen zu einer zusammenfasst funktioniert glaub ich noch nicht richtig, das problem könnte aber auch in der "new date, ...gethours,etc. liegen.
hier der code:
Code:
<html>

 <head>
 <script type="text/javascript">
 
 var gesammttext = " ";
 var neuer_name =" ";
 var neuer_teil = " "; 
 var jetztminute;
 var jetztstunde;
 var jetzttag;
 var jetztmonat;
 var jetzt; 
 var jetzt2;
 var neuer_text;
 function chattext()
 {
 
 neuer_name=document.chatform.name;
 neuer_text=document.chatform.neuer_text;
 jetzt=new Date();
 jetztminute=jetzt.getminutes();
 jetztstunde=jetzt.gethours();
 jetzttag=jetzt.getdate();
 jetztmonat=jetzt.getmonth();
 jetzt2="jetzttag"+", "+"jetztmonat"+" um "+"jetztstunde"+":"+"jetztminute";
 
 neuer_teil="neuer_name"+" schrieb am"+" jetzt2 "+":<br>"+"neuer_text"+"<br><br><br>;
 gesammttext="gesammttext"+"neuer_teil";
 
 document.chatform.gesammterchattext.value="gesammttext"; 
 
 };
 
 
 </script> 
 </head>
 
 <body>
 <form name="chatform"
 kleiner Chat:<br>
 
 <br><br>
 <textarea cols="40" rows="8" name="gesammterchattext" value=" " readonly>
 
 </textarea>
 <br><br><br>
 <b>Neuer Eintrag:</b><br><br>
 Nickname:
 <input type="text" size="32" name="name" value="gebe hier deinen Nickname ein"><br>
 Text    :
 <textarea cols="29" rows="4" name="neuer_text">
  
 </textarea><br><br>
 <input type="submit" value="eintrag senden" name="abschick_button" onClick="chattext()">
 </form>
 </body>
</html>

hat jemand ne ahnung was hier falsch läuft?
 
Zunächst solltest Du einige Syntaxfehler beheben:
  • Zeile 26 fehlt am Ende ein "
  • form-Tag Zeile 40 wird nicht geschlossen
  • Doctype kann auch bei Javascript-Spielereien nicht schaden
  • Das Formular braucht ein action-Attribut, sei es auch nur
    PHP:
    <form name="chatform" action="">
  • Der Vollständigkeit halber ein Titel:
    PHP:
    <title>Javascript-Test</title>
  • value gibt es nicht bei textarea, der Anfangsinhalt kommt zwischen Anfangs- und Endtag.
Jetzt ist zumindest von der Syntax alles in Ordnung und es kann an die logische Fehlerursache gehen:
  1. Die Seite lädt neu, wenn man auf eintrag senden klickt. Um das zu verhindern, entferne das onclick-Attribut komplett und füge stattdessen ein onsubmit-Attribut ins form-Tag ein:
    PHP:
    <form name="chatform" action="" onsubmit="chattext();return false;">
    return false; sorgt dafür, dass das Abschicken des Formulars verhindert wird (Du möchtest das Formular ja mit Javascript auswerten).
  2. Ein Testlauf zeigt, dass die Seite trotzdem noch neulädt. Das passiert wahrscheinlich, weil zunächst die Funktion aufgerufen wird und ein Fehler diese zum Stoppen bringt. Das ist aber genau genommen sehr erfreulich, denn in der Fehlerkonsole lässt sich der Fehler leicht finden:
    Fehlerkonsole schrieb:
    Fehler: jetzt.getminutes is not a function
    Zeile: 23
Gruß
Junny

edit: Zwei Tipps noch für das weitere Vorgehen:
  • Funktionen sind case-sensitive, z.B. ist getminutes() etwas anderes als getMinutes().
  • "jetzttag" ist ein String mit den acht Buchstaben j, e, t, z, t, t, a und g.
    jetzttag ist die Variable mit dem Namen jetzttag.
 
Zuletzt bearbeitet:
bin nun schon weiter

hi junny,
danke erstmal für deine Tipps!:wink:
ich hab jetzt alles gändert und jetzt hab ich das Problem, dass es ja kein value im textarea tag geben darf.
wie sag ich jetzt meinem computer, dass ich den "gesammttext" in die area schreiben will.
immoment schreibt er nähmlich das wort g e s a m m t t e x t rein.:lol:

P.S: Was is den ein Doctype???:???:


edit:

<head>
<title>Chatprogramm</title>
<script type="text/javascript">

var gesammttext = " ";
var neuer_name =" ";
var neuer_teil = " ";
var jetztminute;
var jetztstunde;
var jetzttag;
var jetztmonat;
var jetzt;
var jetzt2;
var neuer_text;
function chattext()
{

neuer_name=document.chatform.name;
neuer_text=document.chatform.neuer_text;
jetzt=new Date();
jetztminute=jetzt.getMinutes();
jetztstunde=jetzt.getHours();
jetzttag=jetzt.getDate();
jetztmonat=jetzt.getMonth();
jetzt2="jetzttag"+", "+"jetztmonat"+" um "+"jetztstunde"+":"+"jetztminute";

neuer_teil="neuer_name"+" schrieb am"+" jetzt2 "+":<br>"+"neuer_text"+"<br><br><br>";
gesammttext="gesammttext"+"neuer_teil";

document.chatform.gesammterchattext.value="gesammttext";

};


</script>
</head>

<body>
<form name="chatform" action="" onsubmit="chattext();return false;">
kleiner Chat:<br>
Thema: was könnte auf dieser angebotsseite noch verbessert werden???
<br><br>
<textarea cols="40" rows="8" name="gesammterchattext" readonly>

</textarea>
<br><br><br>
<b>Neuer Eintrag:</b><br><br>
Nickname:
<input type="text" size="32" name="name" value="gebe hier deinen Nickname ein"><br>
Text :
<textarea cols="29" rows="4" name="neuer_text">

</textarea><br><br>
<input type="submit" value="eintrag senden" name="abschick_button">
</form>
</body>
</html>
 
so, jetzt hab ich ein bisschen rumprobiert und jetzt funktioniert es....halbwegs.
ich hab das Gefühl wenn ich mit
Code:
document.  .  .
arbbeite, will mein computer von mir ein objekt!
jedenfalls zeigt er mir nicht den inhalt einer variable damit an!?!?.

nun hab ichs so und es funzt kein bisschen.:cry:
Code:
<html>
 
 <head>
 <title>Chatprogramm</title>
 <script type="text/javascript">
 
 var gesammttext = " ";
 var Chat= {
 text:" "
 name:" " 
 };
 var jetztminute;
 var jetztstunde;
 var jetzttag;
 var jetztmonat;
 var jetzt; 
 var jetzt2;
 var neuer_text;
 function chattext()
 {
 Chat.name=document.chatform.nickname
 Chat.text=document.chatform.neuer_text
 jetzt=new Date();
 jetztminute=jetzt.getMinutes();
 jetztstunde=jetzt.getHours();
 jetzttag=jetzt.getDate();
 jetztmonat=jetzt.getMonth();
 jetzt2=jetzttag+", "+jetztmonat+" um "+jetztstunde+":"+jetztminute;
 
 neuer_teil=neuer_name+" schrieb am"+ jetzt2 +":"+neuer_text;
 gesammttext=gesammttext+neuer_teil;
 
 document.chatform.gesammterchattext.value=gesammttext; 
 
 };
 
 
 </script> 
 </head>
 
 <body>
 <form name="chatform" action="" onsubmit="chattext();return false;">
 kleiner Chat:<br><br><br>
 <textarea cols="40" rows="8" name="gesammterchattext"  readonly>
 
 </textarea>
 <br><br><br>
 <b>Neuer Eintrag:</b><br><br>
 Nickname:
 <input type="text" size="32" name="nickname" value="gebe hier deinen Nickname ein"><br>
 Text    :
 <textarea cols="29" rows="4" name="neuer_text">
 
 </textarea><br><br>
 <input type="submit" value="eintrag senden" name="abschick_button">
 </form>
 </body>
</html>

edit:
ist das was ich da fabriziert hab auch ein objekt oder einfach nur schwachsin???



ich weis jetzt was ´n doctype is =-)
 
Hallo Five-O,

das sieht doch schon gar nicht so schlecht aus.

Du verwechselst gerade etwas mit dem Begriff Objekt, darum versuchst Du sicher so etwas:
Code:
var Chat= {
 text:" "
 name:" " 
 };
Das ist hier nicht nötig und ich empfehle Dir, den Schritt nochmal rückgängig zu machen.
Mit Objekt ist hier ganz einfach das HTML-Element gemeint, in dem die gewünschte Information gespeichert ist. Du greifst darauf mit
Code:
document.chatform.nickname;
bzw.
Code:
document.chatform.neuer_text;
zu. Das funktioniert zwar (noch), aber besser wäre, dem Element eine eindeutige ID zu geben und mit
Code:
document.getElementById("nickname");
darauf zuzugreifen.
SELFHTML: JavaScript / Objektreferenz / document
Weil Du mehrmals auf das Element zugreifen möchtest, bietet sich an, das ganze so zu schreiben:
Code:
var nickNameField = document.getElementById("nickname");
Jetzt kannst Du ganz einfach mit nickNameField.value auf den Inhalt des Felds zugreifen und diesen auslesen oder verändern.

Zu dem Problem mit g e s a m m t t e x t: Mache Dir nochmal klar, was ich oben beschrieben habe: Der Unterschied, ob Du etwas mit Anführungsstrichen schreibst oder ohne.
  • Mit: String, also das Wort
  • Ohne: Die Variable mit dem jeweiligen Namen
Gruß
Junny
 
Mit document.chatform.nickname/document.getElementById("nickname") hast du ein HTML-Element, welches als Objekt abgebildet ist (eine Instanz von HTMLInputElement). Wandelt man dieses Objekt in einen String um, wird daraus "Object".

Wenn du den Text eines Inputs/Textarea haben möchtest, dann frag die Eigenschaft .value ab.
 
und es klappt immernochnicht

hi junny,
ich will dich jetzt nicht so als lektor missbrauchen,
aber wo steckt der Fehler?!?!?!:
HTML:
<html>
 
 <head>
 <title>Chatprogramm</title>
 <script type="text/javascript">
 
 var gesammttext = " ";
 var nickNameField = document.getElementById("nickname");
 var TextField      = document.getElementById("neuer_text");
 var jetztminute;
 var jetztstunde;
 var jetzttag;
 var jetztmonat;
 var jetzt; 
 var jetzt2;
 var neuer_text;
 var neuer_teil;
 var neuer_name;
 function chattext()
 {
 neuer_name=nicknameField
 neuer_text=TextField
 
 jetzt=new Date();
 jetztminute=jetzt.getMinutes();
 jetztstunde=jetzt.getHours();
 jetzttag=jetzt.getDate();
 jetztmonat=jetzt.getMonth();
 jetzt2=jetzttag+", "+jetztmonat+" um "+jetztstunde+":"+jetztminute;
 
 neuer_teil=neuer_name+" schrieb am"+ jetzt2 +":"+neuer_text;
 gesammttext=gesammttext+neuer_teil;
 
 document.chatform.gesammterchattext.value=gesammttext; 
 
 };
 
 
 </script> 
 </head>
 
 <body>
 <form name="chatform" action="" onsubmit="chattext();return false;">
 kleiner Chat:<br>
 Thema:  was könnte auf dieser angebotsseite noch verbessert werden???
 <br><br>
 <textarea cols="40" rows="8" name="gesammterchattext"  readonly>
 
 </textarea>
 <br><br><br>
 <b>Neuer Eintrag:</b><br><br>
 Nickname:
 <input type="text" size="32" name="nickname" id="nickname" value="gebe hier deinen Nickname  ein"><br>
 Text    :
 <textarea cols="29" rows="4" name="neuer_text" id="neuer_text" >
 
 </textarea><br><br>
 <input type="submit" value="eintrag senden" name="abschick_button">
 </form>
 </body>
</html>
 
Zuletzt bearbeitet:
Öffne das Ganze mal mit dem Firefox. Oben unter Extras-->Fehlerkonsole findest Du ein sehr nützliches Tool, um Dir die entstehenden Fehler anzeigen zu lassen.

Fehlerkonsole schrieb:
Fehler: nicknameField is not defined
Zeile: 20

In diesem Fall wohl auch ein bisschen meine Schuld: Variablennamen sind case-sensitiv und ich habe in einem früheren Beitrag mit dieser gemischten Groß- und Kleinschreibung angefangen.

Übrigens wird gleich danach ein zweiter Fehler auftauchen, weil Du nicht nickNameField sondern nickNameField.value meinst (Du willst ja auf den Text darin zugreifen und meinst nicht das Objekt/Element selber).

Gruß
Junny

PS: Nutze zum Posten von Code bitte PHP- oder HTML-Tags.

edit: Ich meine natürlich PHP- oder Code-Tags. HTML ist hier kaputt.
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben