JS-Problem mit Chat
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abschnitt
aufruf
benutzer
blocken
browser
code
datei
definition
funktion
grad
header
helfen
lesbarkeit
packen
text
trennen
url
verbessern
zeile
zeitpunkt
-
Ich habe ein kleines Problem. Ich plane einen kleinen Chat. Leider gibt es im Moment ein Problem, dass ich mir leider nicht erklären kann. Wahrscheinlich bin ich nur mal wieder blind. Hier ist der Link: http://c-chat.lima-city.de/1.1/index.html
Wenn man etwas zum schreiben einträgt, dann kommt das auch an, also wird gespeichert. Das Lesen funktioniert aber nicht. Die Fehlerkonsole spuckt zu Zeile 99 folgende Fehlermeldung aus: "document.hilfsform is undefined". Der Quellcode ist auf der Seite zu finden, die Datei endet auf .html, beinhaltet also kein PHP. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
naja...da die seite weder html, body noch head tags beinhaltet und auch keine doctype-deklaration würde ich mir über den chat erstmal keine gedanken machen, und erstmal die seite in einen w3c-konformen zustand bringen.
wenn du glück hast, löst das auch schon das problem, da javascript unter umständen erst auf das document-attribut zugreifen kann, wenn ein <body> definiert ist
mfg -
Also bei mir funktioniert da überhaupt nichts. Und wo ist das HTML? Wenn man den Code anschaut ist da nur ein kleiner JS Block.
-
Oh, da habe ich etwas vergessen zu erklären. Diese Datei kommt mitten in eine andere Datei rein, desshalb ist dort kein Header und Body.
Und das wenige HTML, das da drinne ist ist unter dem HTML-Block. -
Wenn du JS richtig und ohne Fehler überall nutzen willst benötigt die Seite die den Chat beinhält auch ein vollständiges HTML Document. Und über deine Chat Datei sollte nur Text bzw. JSON Elemente daher kommen.
-
Daran kann es nicht liegen. Ich habe jetzt header und body eingezeichnet, und es geht nicht. Einzigster Unterschied: jetzt ist es nicht Zeile 99, sondern 101, weil ich 2 Zeilen nach unten bin.
-
Naja, ich würde ja gerne helfen, aber wenn ich einen Text schreiben will, dann feuert Firebug sofort los. Und diese ganzen leerzeilen solltest du auch dringend entfernen. Das würde deinen Code um ein vielfaches lesbarer machen.
-
c-chat schrieb:
Die ganzen Leerzeichen sind dazu da, um Abschnitte des Codes eindeutig zu trennen.
Du willst mir also weiß machen das 20 Leerzeilen, Zeilen!, zwischen zwei einzelnen Blöcken/Zeilen die Lesbarkeit verbessern? haha, ich lach mich schlapp. -
evil-devil schrieb:
c-chat schrieb:
Die ganzen Leerzeichen sind dazu da, um Abschnitte des Codes eindeutig zu trennen.
Du willst mir also weiß machen das 20 Leerzeilen, Zeilen!, zwischen zwei einzelnen Blöcken/Zeilen die Lesbarkeit verbessern? haha, ich lach mich schlapp.
Das habe ich jetzt so gemacht, damit ich unterscheiden kann, was sicher funktioniert und was nicht. Ich mache den Code jetzt nochmal so, wie er allgemein üblich ist.
<html> <head> <script type="text/javascript"> function auslesen(url) { // das ganze catch-zeugs noch hin schreiben if (window.XMLHttpRequest) { req=new XMLHttpRequest(); } else { req=new ActiveXObject("Microsoft.XMLHTTP"); } if (req) { req.open("GET", url, false); req.send(null); return req.responseText; } else { return '0'; } } // funktionsende function chat_aktualisieren() { document.getElementById('chat_text').innerHTML = auslesen('http://c-chat.lima-city.de/1.1/text.php'); } // funktionsende function id_vergleich() { var aktuelle_id_intern = document.hilfsform.aktuelle_id.value; var aktuelle_id = auslesen('http://c-chat.lima-city.de/1.1/id.txt'); if(aktuelle_id > aktuelle_id_intern) { document.hilfsform.aktuelle_id.value = aktuelle_id; chat_aktualisieren(); sound(); } window.setTimeout("id_vergleich()", 500); } // funktionsende function senden() { var username = 'example'; var text = document.sendform.text.value; auslesen('http://c-chat.lima-city.de/1.1/schreiben.php?username=' + username + '&text=' + text); document.sendform.text.value = ''; document.sendform.text.focus(); document.sendform.text.select(); sound(); } // funktionsende function sound () { document.getElementById('sound').innerHTML = '<object classid="CLSID:D27CDB6E-AE6D-11cf-96B8-444553540000" width="0" height="0" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0"><param name="movie" value="sound.swf"><param name="quality" value="high"><param name="scale" value="exactfit"><param name="menu" value="true"><param name="bgcolor" value="#000040"><embed src="sound.swf" quality="high" scale="exactfit" menu="false" bgcolor="#000000" width="0" height="0" swLiveConnect="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash"></embed></object>'; } // funktionsende </script> </head> <body onload="id_vergleich()"> <div id="sound"></div> <div id="chat_text" name="chat_text" style="border: 1px solid rgb(204, 204, 204); padding: 0px; background: rgb(255, 255, 255) url(hg.png) repeat-x scroll center top; overflow: scroll; position: fixed; bottom: 45px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 150px; width: 250px; left: 10px;">loadin..</div> <div id="chat_schreiben" name="chat_schreiben" style="border: 1px solid rgb(204, 204, 204); padding: 0px; background: rgb(255, 255, 255) url(hg.png) repeat-x scroll center top; position: fixed; bottom: 10px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; height: 28px; width: 250px; left: 10px;"> <form name="sendform" action="Javascript: senden()"> <input type="text" name="text" style="height:98%; width: 90%;" /> <input type="submit" value="" style="height:0px; width: 0px;" /> </form> </div> <form name="hilfsform" id="hilfsform" action=""> <input type="hidden" name="aktuelle_id" value="1" /> </form> </body> </html>
Kannst du mir jetzt helfen? -
Hi,
das Script, welches die Seite ausgibt, ist anders, als das, das du postest.
Am Ende im Script wird die Funktion id_vergleichen aufgerufen.
Das produziert den Fehler!
Du musst den Funktionsaufruf in den body ins Attribus onLoad schreiben!
MfG
Steffen -
c-chat schrieb:
Kannst du mir jetzt helfen?
er vlcht nich aber ich.
du rufst die funktion id_vergleichen(); gleich nach der definition des scriptes auf. zu diesem zeitpunkt existiert die hilfsform allerdings noch nicht, da html von oben nach unten interpretiert wird. wenn du also die funktion aufrufst steht grade mal der head der seite beim benutzer (bzw in dessen browser) bereit.
deswegen den aufruf der funktion ins onload event vom body packen, dann sollte es gehen
mfg -
syberpsace schrieb:
c-chat schrieb:
Kannst du mir jetzt helfen?
er vlcht nich aber ich.
du rufst die funktion id_vergleichen(); gleich nach der definition des scriptes auf. zu diesem zeitpunkt existiert die hilfsform allerdings noch nicht, da html von oben nach unten interpretiert wird. wenn du also die funktion aufrufst steht grade mal der head der seite beim benutzer (bzw in dessen browser) bereit.
deswegen den aufruf der funktion ins onload event vom body packen, dann sollte es gehen
mfg
Danke! Da ich header und body nicht verwenden kann, weil es mitten in eine Datei kommt, habe ich ganz am Ende der Datei noch
geschrieben, und es funktioniert! Vielen Dank!<script type="text/javascript"> id_vergleich(); </script>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage