JavaScript code geht offline aber nicht online

RVD

Grünschnabel
Hi und erstmal sorry, falls das hier der falsche Bereich ist, dann bitte ich es in den richtigen zu schieben. Ich habe leider für JavaScript nichts gefunden und bin neu hier.

Ich habe folgendes Problem, ich habe ein kleines Rechnerscript geschrieben, mit dem man Strom, Spannung, Widerstand und Leistung ausrechnen kann. Das ganze habe ich so aufgebaut, dass ich 4 Checkboxen und 4 Textfelder habe, für jeden Wert eine Checkbox und das dazugehörige Textfeld. Man darf immer nur 2 Werte eingeben, die beiden restlichen werden dann automatisch ausgerechnet. Limitiert habe ich die Eingabe dadurch, dass ich von vorne herein alle Textfelder deaktiviert und alle Checkboxen aktiviert habe. Klickt man nun eine Checkbox an, wird das dazugehörige Textfeld aktiviert. Sind 2 Checkboxen angeklickt, werden die restlichen Checkboxen deaktiviert, können also garnicht mehr angeklickt werden, die dazugehörigen Textfelder sind also auch nicht editierbar und geben nur das Ergebnis wieder.

Nun das eigentliche Problem ist, offline, wenn ich die Datei einfach in meinem Browser öffne, funtktioniert das ganze genau so wie es soll, ich kann alles aktivieren, deaktivieren usw. doch sobald ich das ganze auf den Server lade und darüber aufrufe, funktioniert es nicht mehr.

ich habe da natürlich schon eine ganze Weile rumprobiert und es scheint irgendwie, als würden die for-Schleifen nicht richtig ausgeführt. Kann so etwas sein? ich hatte Testweise mal die Zählervariable ausgeben lassen, welche offline auch wie es sein sollte 4 mal ausgeführt wurde, online lediglich einmal.

Codeausschnitt:

Code:
if(schranke==2)
	{ 
			
		for (var h = 0; h < 4; h++) 
             {
								
                   if (Ohm.auswahl[h].checked==false)
				   {
				   alert("h="+h+"schranke2="+schranke);
				       Ohm.auswahl[h].disabled=true;				   				   				 				  
				   }
             } 
.
.
.
.

das ist zum Beispiel der Codeteil, der dafür sorgen soll, dass, wenn 2 Checkboxen angeklickt sind, die anderen deaktiviert werden, was online nicht funktioniert.

Ich bin für jeden Hinweis dankbar, es konnte mir bisher niemand sagen wo das Problem liegt
 
Hallo und Herzlich Willkommen RVD,

zu deinem Problem selber weiss ich leider auch keinen Rat, aber...
... es giebt bei "Webmaster & Internet" ein Unterforum "Javascript & Ajax".
... anstatt die Variable so auszugeben kannst du auch den JavaScript-Debugger benutzen. (das FireFox-Add-on FireBug)
Der zeigt dir live alle Variablen-Werte und noch vieles mehr an.

Hoffe das hilft dir etwas,
javaDeveloper2011
 
hi,

ja Firebug nutze ich auch. Es ist nur sehr nervig und umständlich das ganze immer wieder auf den Server hoch zu laden, wenn man garnicht weiß, woran es liegt. Es ist nicht mein Server und läuft da über Tortoise, falls das einem was sagt, finde ich etwas umständlich, aber ist ja nicht meine Entscheidung. Ich kann mir dann auch nur ansehen, dass es nicht funktioniert, aber nicht wo der Fehler liegt. Die Schleife wird eben nur einmal durchlaufen, als würde nur der intiale, erste Durchlauf gemacht und dann bricht er irgendwie ab. Und das Phänomen tritt eben nur auf, wenn ich es auf den Server geladen habe.

Ich arbeite an einer Seite, auf der mehrere Leute Arbeiten und dort läuft auch ein Parser, der nach eckigen Klammern sucht. Könnte das zu einem Problem führen?
 
Mal ganz davon abgesehen das es sehr wohl einen eigenen Bereich für JavaScript gibt , dieser rein iterativ sogar noch vor dem Programming-Block kommt fällt es mir schwer zu verstehen warum du bei JavaScript im Bereich Programming guckst ... sowas gehört eher in Scripting , oder wie bei uns eben : WEB ... von daher solltest du deine Ansicht diesbezüglich präzisieren.

Zum Problem selbst : es gibt mehrere Möglichkeiten warum es lokal läuft und online nicht ... aber ohne genauere Infos wird das ein Ratespiel.

Folgendes führt immer wieder zu Problemen :

1) Unterschiedliche Sicherheitseinstellungen zwischen verschiedenen Zonen
In der Regel ist alles was LOKAL oder INTRANET ist in einer sehr niedrigen Stufe eingeordnet und man hat sehr viele Freiheiten und Privilegien. INTERNET hat dagegen eine weit aus höhere Stufe und ist sehr viel eingeschränkter ... es kann sein das es einfach keine Rechte gibt um dies oder das auszuführen ... *was ich mir bei JavaScript aber nicht vorstellen kann ... denn entweder wird es ausgeführt ... dann komplett ... oder eben überhaupt nicht*.

2) Server-Umgebung
Auch ein beliebter Fehler ist bei der sog. Auslagerung zu finden : wenn man die Übersicht bewahren will lagert man zusammenhängende Programmcodes in einzelne Dateien aus ... diese müssen aber beim Laden der Seite auch wieder geladen werden ... was natürlich Datei- und Ordnerstrukturen verlangt ...
Beliebteste Fehler : kein Rechte , falsches Verzeichnis , Case-Sensitive , ungültige URL

3) Übertragungsfehler der Daten
Eine heutzutage zum Glück kaum noch vorhandene Gefahr ... aber durch aus noch existent : es können beim Übertragen der Daten auf einen anderen Rechner Übertragungsfehler entstehen welche trotz Zahlreicher Schutzmechanismen auf verschiedenen Ebenen komplett unbemerkt bleiben. Daher sollte man auf beiden Seiten UNABHÄNGIG von ein ander Prüfsummen bilden und diese ggf über einen anderen Weg vergleichen *um weitere Übertragungsfehler der selben Leitung zu verhindern*. Das sollte heute aber praktisch nicht mehr vorkommen ...


Zitat letzter Satz : "Parser der nach Klammern sucht"
Hast du dir schon mal die Mühe gemacht den Source deines JavaScript nach der Übertragung noch einmal anzusehen ? Und ich meine damit nicht via FTP dierekt nach dem Upload sondern wenn du die Seite im Browser aufrufst ... sollten hier Unterschiede auftreten ist definitiv was mit der Server-Software nicht in ordnung. Ob bewusst durch diesen "Parser" oder durch einen Bug ... das kann man dann untersuchen.

Versuche mal folgendes : verschicke den Code via Zip oder Tar-GZ per E-Mail an anderen Zugangsberechtigte , lasse ihn von diesen hochladen und testen ... tritt der Fehler weiterhin auf so weist du zumindest das es weder am Code noch an dir liegt sondern dann höchstwarscheinlich am Server. Auch solltest du es mal zum Test auf einem anderen Server ausprobieren.


Was das Stück Code da an sich angeht : ich möchte mir den Rest erlich gesagt garnicht durch lesen da hier schon einige Konzeptionsfehler drin stehen. Damit meine ich vor allem das du kein OOP verwendest. In OOP verwendet man keine Zähler wie viele Elemente aktiviert sind oder so ... sondern man prüft bei JEDEM Event die komplette relevante Struktur und prüft dann mit "Live"-Werten.
Ob , und wenn ja wie man OOP in JavaScript umsetzen kann weis ich nicht ... aber es sollte bis zu einem gewissen Grad schon möglich sein.
 
Es ist nur sehr nervig und umständlich das ganze immer wieder auf den Server hoch zu laden, wenn man garnicht weiß, woran es liegt.
Installiere doch einen Webserver auf deinem Entwicklungsrechner. Damit kannst du deutlich näher an der Wirklichkeit testen und viele der von SPiKEe genannten Fehlerquellen werden dann schon relevant.

Gruß
MCoder
 
@Spike: du scheinst zwar viel ahnung zu haben, aber bei den letzten Sätzen muss ich dann doch sogar schmunzeln. Du bemängelst, dass ich das nicht mit OOP mache, weißt aber selber nicht genau, wie das mit JavaScript geht. Wäre es normales Java oder C++/C#, hätte ich es sicher auch so gemacht, allerdings ist es mir auch online beim Recherchieren nie untergekommen, dass bei JavaScript jemand objektorientiert programmiert hat, ich habe da noch nie einen Iterator oder ähnliches gesehen, viel mehr wird da viel mit Schleifen gearbeitet. Ich kann meine Checkboxen übrigens auch so direkt ansprechen eben mit auswahl[0] bis 3, hilft mir aber nichts, wenn es nunmal immer dynamisch 2 andere Boxen sind, die deaktiviert werden sollen.

dass das ganze eher ins Scripting gehört, nun gut, mag sein, ich hab mich ja im vorhinein schon entschuldigt, falls es im falschen Bereich landet, da ich neu hier bin. Wenn man schon länger hier ist, scheint einem das vielleicht ganz einleuchtend, einem Neuling nachts um 2 aber nicht so sehr.

der code wurde auch schon von verschiedenen Leuten mehrmals hoch und wieder runter geladen, da ändert sich an der Sachlage nichts. Auf den Code online habe ich noch nicht so sehr geachtet, das ist ein guter Tipp, da müsste ich mal nachsehen.

Mein Code an sich und der Rechner laufen jetzt auch online und damit habe ich den Fehler zwar denke ich isoliert, aber immernoch keinen bestätogten Grund dafür. Ich habe eben einfach alle Schleifen auseinander gefriemelt und frage alles explizit ab bzw. weise es dann zu. Es liegt also irgendwo an den Schleifen, die nicht durchlaufen werden. Das ist jetzt sehr unschön, der eigentliche Code, der auch offline lief, war mal schön sauber und kompakt, auch ohne OOP.

Mir war wie gesagt bisher auch nicht bewusst, dass es OOP bei JavaScript gibt, ich bin da ziemlich neu und habe vor 3 Wochen glaub ich zwecks meiner Nebenbeschäftigung damit angefangen und habe über Goole und andere Foren nie objektorientierten Code dazu gefunden. Mit objektorientierten Sprachen habe ich auch eben auch mehr Erfahrung aus Ausbildung und Studium, aber wie du da ohne Iterieren herausfinden willst, welche Box aktiv ist und welche nicht, weiß ich trotzdem nicht. Ich habe in meinem Code auch bei jedem Click auf einer der Boxen einen Event, der eben das Konstrukt überprüft und dementsprechend reagiert.

@MCoder: ich habe XAMPP installiert und es da anfangs auch mal laufen lassen, ist aber schon länger her. Da kann ich die "fehlerhafte" Kopie, die ich natürlich noch habe, mal laufen lassen, gute Idee.
 
Zurück