externes script stoppt laden bei var (IE6)
scherzkeks
- javascript
Ein externes eingebundenes JavaScript unterbricht den Ladevorgang, sobald eine Variablendeklaration und -definition stattfindet (ich mache das immer zusammen). Die Variable wird aber nicht mehr gesetzt.
Ich habe schon diverses ausprobiert (alertboxen davor und dahinter, mehrere Zeilen, weniger zeilen, global/lokal, keine Zeilenumbrueche mit CR/LF, im HEX-Modus nach auffaelligen Zeichen gesucht, ...)
Es macht einfach keinen Unterschied. Die Alertboxen vor einer Variablendefinition (nenn ich jetzt so, der Einfachheit halber) funktionieren "Einwandfrei" (entweder sie gehen oder nicht, oder?), die danach nicht.
Kennt jemand das Problem, weiß er/sie, an was es vlt liegen koennte oder was ich falsch mache?
Die Datei hatte funktioniert, doch ist immer mehr gewachsen (ein String, jedoch der zweite definierte, ist ca. 50kb gross) und ging irgendwann nicht mehr. Allerdings habe ich sie nicht regelmaessig ausprobiert. Als ich sie beim testen kleiner machte (aus dem 50kb-String wurde ein 10-Zeichen-String), brachte das nichts.
Vielen Dank im Vorraus und noch nen schönen....ähh...Freitag,
scherzkeks
PS: Ich benutze IE 6.0, habe keinen anderen Browser auf diesem ausgeliehenen Computer. Die Dateien stell ich gleich mit meinen 5 - 8k ins Netz.
Hallo Freunde des gehobenen Forumsgenusses,
Könntest du mal eine Beispielseite hochladen, damit wir das Problem nachvollziehen können? Hast du schonmal geschaut, was die JS-Konsole beliebiger Geckos dazu meint?
Gruß
Alexander Brock
Hallo Freunde des gehobenen Forumsgenusses,
Hallo,
Könntest du mal eine Beispielseite hochladen, damit wir das Problem nachvollziehen können?Bei dem... nunja, nicht wirklich Computer, den ich da hab, sind mal wieder 0-1% "Systemressourcen frei", deshalb zieht sich das mit meinem 56k-Modem schon mal in die Laenge.
http://www.nrg.to/blooody/hausarbeit/begriffe.htm
http://www.nrg.to/blooody/hausarbeit/begriffe.js
http://www.nrg.to/blooody/hausarbeit/Hausarbeit.rar
http://www.nrg.to/blooody/hausarbeit/selfss.png
Hast du schonmal geschaut, was die JS-Konsole beliebiger Geckos dazu meint?
Hab nur IE und der Rechner gehoert nicht mir.
Ausserdem komme ich oft nur auf 8-10k mit meinem Modem.
Gruß
dir auch,
scherzkeks
Alexander Brock
Hallo
http://www.nrg.to/blooody/hausarbeit/begriffe.htm
http://www.nrg.to/blooody/hausarbeit/begriffe.js
http://www.nrg.to/blooody/hausarbeit/Hausarbeit.rar
http://www.nrg.to/blooody/hausarbeit/selfss.png
Hast du schonmal geschaut, was die JS-Konsole beliebiger Geckos dazu meint?
Die Javascript-Konsole meckert folgendes an:
begriffe.js Zeile 3: typeOf is not defined,
siehe dazu SELFHTML, typeof.
begriffe.htm Zeile 8: alleBegriffeImString has no properties
siehe dazu Variablen definieren.
begriffe.htm Zeile 20: alleBegriffeImArray is not defined,
ein Folgefehler.
Ein paar Tipps:
Deine Variablen- und Funktionsbezeichnungen sind sehr verbesserungswürdig, ein Beispiel dafür ist die Anweisung:
var trennervar18 = "_hierwirdgetrenttt_";
Meiner Meinung nach ist weder der Variablenname noch Deine Trennzeichenfolge gut gewählt. Warum beklagst Du Dich über Dein lahmes 56k-Modem, Du nimmst ja überhaupt keine Rücksicht darauf.
Wenn ich mir folgende Funktion anschaue:
function daszudas(was, das, wer)
{
dann = wer.split(was);
der = dann[0];
for(o=1;o<dann.length;o++)
der+= das + dann[o];
return der;
}
dann frage ich mich, ob Du join() kennst. Es wäre ein Euphemismus, Deine Variablenbezeichnungen unglücklich zu nennen.
Dich möchte ich fragen, was Deine riesige auskommentierte Tabelle im Demobeispiel soll.
Was meinst Du mit "externes script stoppt laden bei var (IE6)"? Die Sanduhr? Ja, die erscheint in meinem Firefox auch.
Freundliche Grüße
Vinzenz
Ich habe die Erklaerung Absichtlich allgemein gehalten, da ich meine unfertigen scripts eigentlich nicht "zeigen" wollte.
Meine Variablennamen aendern sich, waehrend ich an einem Projekt arbeite, vor allem, weil viele nur temporaer sind.
genauso war die Auskommentierung der Tabelle nur temporaer.
Die Scripts befinden sich meilenweit entfernt von einem finalen Status.
Hallo
Hallo
http://www.nrg.to/blooody/hausarbeit/begriffe.htm
http://www.nrg.to/blooody/hausarbeit/begriffe.jshttp://www.nrg.to/blooody/hausarbeit/Hausarbeit.rar
http://www.nrg.to/blooody/hausarbeit/selfss.pngHast du schonmal geschaut, was die JS-Konsole beliebiger Geckos dazu meint?
Die Javascript-Konsole meckert folgendes an:
begriffe.js Zeile 3: typeOf is not defined,
siehe dazu SELFHTML, typeof.
Das war nur ein Test. Was mache ich falsch?
Ich wollte den Typ des Rueckgabewertes der alert-box in einer anderen Alertbox ausgeben.
begriffe.htm Zeile 8: alleBegriffeImString has no properties
siehe dazu Variablen definieren.
Was ist hieran falsch? Bin ich mit Blindheit geschlagen oder definiere und deklariere ich Variablen schon seit Jahren falsch, ohne es zu merken und so, dass es trotzdem funktioniert?
begriffe.htm Zeile 20: alleBegriffeImArray is not defined,
ein Folgefehler.
Das kann ich mir auch zusammenreimen. Die Links in/zu SELFHTML bringen mir herzlich wenig, dort haette ich auch schon nachgeschaut, wenn ich der Meinung waere, ich koennte keine Variablen setzen.
Ein paar Tipps:
Deine Variablen- und Funktionsbezeichnungen sind sehr verbesserungswürdig, ein Beispiel dafür ist die Anweisung:
var trennervar18 = "_hierwirdgetrenttt_";
Wiegesagt, ich bin noch lange nicht fertig und im Entwicklungsstadium ist mir weit wichtiger, dass es den Bezeichner noch nicht gibt, als dass sein Name mir etwas sagt, der sich sowieso ein paar Minuten spaeter aendert.
Meiner Meinung nach ist weder der Variablenname noch Deine Trennzeichenfolge gut gewählt.
Ich weiss nich, was das fuer einen Unterschied machen soll, wie die Trennzeichenfolge heisst. So kommt sie sicher nicht im Fliesstext bzw. in den Begriffen vor und sagt mir etwas.
Der Variablenname sagt mir auch etwas. Die 18 ist wieder dazu da, um sicherzugehen, dass es keine Ueberschneidungen gibt.
Vielleicht lerne ich es ja irgendwann, mich an Namenskonventionen zu halten.
Warum beklagst Du Dich über Dein lahmes 56k-Modem, Du nimmst ja überhaupt keine Rücksicht darauf.
Das ist nur Zeitweise (s.o.)
Ausserdem sind 40kb zu verkraften - auch bei 8kbit/s down (40 sek)
Wenn ich mir folgende Funktion anschaue:
function daszudas(was, das, wer)
{
dann = wer.split(was);
der = dann[0];
for(o=1;o<dann.length;o++)
der+= das + dann[o];
return der;
}
>
> dann frage ich mich, ob Du [join()](http://de.selfhtml.org/javascript/objekte/array.htm#join) kennst.
join() innerhalb der Funktion wuerde Sinn machen, nach dem split()ten.
Unter <http://www.nrg.to/blooody/hausarbeit/test.htm> habe ich jedoch bemerkt, dass meine Funktion angeblich genauso lange braucht, wie replace(): <1 Millisekunde (bitte lasst mich nicht dumm sterben, wenn ich Unrecht habe, das kam mir komisch vor.).
A propos replace().
Das waere sowieso viel beser, als split und join.
Doch da du es nicht erwaehnt hast, gehe ich davon aus, dass du die auskommentierte Fehler"beschreibung" (funzt net) gelesen hast.
> Es wäre ein Euphemismus, Deine Variablenbezeichnungen unglücklich zu nennen.
Waere es auch einer, deine Sprache Hochdeutsch oder gar fuer Foren gewoehnlich zu nennen (jetzt muss ich extra in der Wikipedia nachschlagen... ah, ok, hab ich mir eh gedacht)
>
> Dich möchte ich fragen, was Deine riesige auskommentierte Tabelle im Demobeispiel soll.
(s.o.)
>
> Was meinst Du mit "externes script stoppt laden bei var (IE6)"?
Die Sanduhr? Ja, die erscheint in meinem Firefox auch.
???
Hä?
Falls das ein Witz ist verstehe ich ihn nicht oder es fehlt die Pointe. (Ich seh keinen Zusammenhang (wie Wortspiel) zwischen der grossen Datei bzw der Sanduhr und meinem Titel)
Ein extern ausgelagertes Script im IE6 hoert auf zu laden, nachdem es auf eine Variablendeklaration trifft. (Ich weiss, bei mir ist deklaration und definition zusammen, doch da der Inhalt nicht gespeichert wird (was er frueher schon wurde!!!), nehme ich an, dass die Rechner ueber die Deklaration stolpern. An deinem Link in SELFHTML schliesse ich jedoch, dass du den Fehler weisst. Lasse mich also bitte nicht dumm sterben.)
>
>
> Freundliche Grüße
Danke, freut mich, da mir dein Post ansonsten leicht vorwurfsvoll vorkam, was mir aber in letzter Zeit generell im Forum verstaerkt (nicht mir gegenueber, sondern generell) auffaellt - liegt vielleicht an mir - dir auch freundliche gruesse und noch einen schoenen Freitagabend (oder schon Nacht?),
scherzkeks
> Vinzenz
Hallo
Meine Variablennamen aendern sich, waehrend ich an einem Projekt arbeite, vor allem, weil viele nur temporaer sind.
das ist meiner Meinung nach _keine_ gute Idee.
http://www.nrg.to/blooody/hausarbeit/begriffe.js
begriffe.js Zeile 3: typeOf is not defined,
siehe dazu SELFHTML, typeof.
Das war nur ein Test. Was mache ich falsch?
Lies, bitte lies. Lies genau!
Doch da du es nicht erwaehnt hast, gehe ich davon aus, dass du die auskommentierte Fehler"beschreibung" (funzt net) gelesen hast.
"Funktioniert nicht" ist keine Fehlerbeschreibung, das was zwischen Deinen Klammern steht erst recht nicht.
Es wäre ein Euphemismus, Deine Variablenbezeichnungen unglücklich zu nennen.
Waere es auch einer, deine Sprache Hochdeutsch oder gar fuer Foren gewoehnlich zu nennen (jetzt muss ich extra in der Wikipedia nachschlagen... ah, ok, hab ich mir eh gedacht)
Hochdeutsch war meine erste Fremdsprache. Ich lerne immer noch :-)
Freundliche Grüße
die sind genauso gemeint, ansonsten steht da etwas anderes, siehe http://forum.de.selfhtml.org/archiv/2005/7/t111421/#m701894. Die Anrede schreibe ich inzwischen von Hand ...
Danke, freut mich, da mir dein Post ansonsten leicht vorwurfsvoll vorkam, was mir aber in letzter Zeit generell im Forum verstaerkt (nicht mir gegenueber, sondern generell) auffaellt - liegt vielleicht an mir - dir auch freundliche gruesse und noch einen schoenen Freitagabend (oder schon Nacht?),
Ganz einfach: Es grenzt an Quälerei, sich durch solchen Quellcode wie Deinen zu arbeiten. Insbesondere Funktionsnamen und Variablenbezeichnungen können Quellcode wesentlich vereinfachen. Eine Laufvariable o zu nennen grenzt an Masochismus - oder in diesem Fall an Sadismus.
Ach ja, in Datei begriffe.js, Zeile 11, Spalte 3404 verwendest Du
testvar18
statt
trennervar18
Dies ist der Grund für das Anhalten. Anscheinend ist auch die JS-Konsole des Firefox nicht in der Lage, in einer solch langen Zeile einen Fehler exakt zu lokalisieren. Du siehst hier, was Umbenennen von solchen Variablen, die hier eher die Rolle einer Konstanten übernimmt, bewirken kann.
Du solltest Dir Deine Vorgehensweise bei der Softwareentwicklung überdenken. Du solltest überlegen, welche Vorteile lokale Variablen haben. Du solltest verstehen, dass man diese sinnvoll benennt.
Freundliche Grüße
Vinzenz
Hallo
Hallo
Meine Variablennamen aendern sich, waehrend ich an einem Projekt arbeite, vor allem, weil viele nur temporaer sind.
das ist meiner Meinung nach _keine_ gute Idee.
Da ich deinen Post "schon" zu Ende gelesen habe, kann ich dir hier schlecht widersprechen^^
http://www.nrg.to/blooody/hausarbeit/begriffe.js
begriffe.js Zeile 3: typeOf is not defined,
siehe dazu SELFHTML, typeof.
Das war nur ein Test. Was mache ich falsch?Lies, bitte lies. Lies genau!
Sorry, aber ich erkenne nichts.
Rueckgabewert sollte doch sicher function sein, oder?
Ich habe schon von Anfang an ueberlegt, ob dich stoert, dass ich Klammern benutzt habe, obwohl es hier (vielleicht) nicht dringend notwendig waere...
Und was ich von Anfang an fuer Moeglich hielt, ist, das ich typeOf nur bei Variablen benutzen kann, aber das glaube ich nicht wirklich.
Mit dem Operator typeof steht Ihnen ein Werkzeug zur Typenüberprüfung zur Verfügung.
heisst es bei SELFHTML. Das sagt nichts darueber aus.
Bevor Sie diese verwenden können, sollten Sie im Zweifelsfall den Typ der Variable prüfen
auch nicht, da "alle Aepfel sind Pflanzen" nicht das selbe ist, wie "alle Pflanzen sind Aepfel". Sprich: Nur weils mit Variablen geht, gehts nicht _nur_ mit Variablen (min. 1 != genau 1)
Doch da du es nicht erwaehnt hast, gehe ich davon aus, dass du die auskommentierte Fehler"beschreibung" (funzt net) gelesen hast.
"Funktioniert nicht" ist keine Fehlerbeschreibung
Deshalb habe ich es in Anfuehrungsstriche gesetzt
, das was zwischen Deinen Klammern steht erst recht nicht.
Klammern? Ich habe das da gemeint:
[alleBegriffeImArray[irisi].replace(/\b \b/g,"+")] funktioniert nicht, also [daszudas(" ", "+", alleBegriffeImArray[irisi])]
Es wäre ein Euphemismus, Deine Variablenbezeichnungen unglücklich zu nennen.
Waere es auch einer, deine Sprache Hochdeutsch oder gar fuer Foren gewoehnlich zu nennen (jetzt muss ich extra in der Wikipedia nachschlagen... ah, ok, hab ich mir eh gedacht)Hochdeutsch war meine erste Fremdsprache. Ich lerne immer noch :-)
Wo bist du aufgewachsen? Sprichst du Dialekt? Wo wohnst du?....
Freundliche Grüße
Danke, ebenfalls und noch eine herzlich schoene Nacht,
scherzkeks
die sind genauso gemeint, ansonsten steht da etwas anderes, siehe http://forum.de.selfhtml.org/archiv/2005/7/t111421/#m701894. Die Anrede schreibe ich inzwischen von Hand ...
Tu ich immer (hauptsaechlich, weil ich keine Zeit/Lust habe, "rauszufinden", wie eine automatische sich Einstellen laesst)
Danke, freut mich, da mir dein Post ansonsten leicht vorwurfsvoll vorkam, was mir aber in letzter Zeit generell im Forum verstaerkt (nicht mir gegenueber, sondern generell) auffaellt - liegt vielleicht an mir - dir auch freundliche gruesse und noch einen schoenen Freitagabend (oder schon Nacht?),
Ganz einfach: Es grenzt an Quälerei, sich durch solchen Quellcode wie Deinen zu arbeiten.
Genau deshalb habe ich, wiegesagt, eigentlich nichts davon "veroeffentlichen" wollen.
Insbesondere Funktionsnamen und Variablenbezeichnungen können Quellcode wesentlich vereinfachen.
Ich achte immer darauf, keine Ueberschneidungen zu haben
Eine Laufvariable o zu nennen grenzt an Masochismus - oder in diesem Fall an Sadismus.
Sie heissen doch immer "i" o.ae. ...
Zu erst hiessen beide (irisi und o) i, doch da kamen sie sich in die Quere, obwohl ich dachte, beide lokal deklariert zu haben.
Ach ja, in Datei begriffe.js, Zeile 11, Spalte 3404 verwendest Du
testvar18
statt
trennervar18
Dies ist der Grund für das Anhalten.
Glaubst du? Weisst du?[1] Hast du's ausprobiert?
Anscheinend ist auch die JS-Konsole des Firefox nicht in der Lage, in einer solch langen Zeile einen Fehler exakt zu lokalisieren. Du siehst hier, was Umbenennen von solchen Variablen, die hier eher die Rolle einer Konstanten übernimmt, bewirken kann.
Aber allein bei dem ersten deklarieren der trennervar18 hat das script schon gestoppt und auch, wenn ich den Inhalt der langen Variablen durch etwas anderes, wo mir der Tipp(?)fehler nicht vorkam.
Du solltest Dir Deine Vorgehensweise bei der Softwareentwicklung überdenken.
Naja, da bin ich relativ unbelehrbar und mit meinen 15 Jahren (innerlich eher 10 - neulich habe ich bei Jahreszahlen aus Versehen mit 10 Jahren Alter gerechnet und mich dann gewundert, als "irgendwas nicht gestimmt" hat ^^)-________- stolz auf etwas, dass das nicht Wert ist ;)
Du solltest überlegen, welche Vorteile lokale Variablen haben.
Ganz am Anfang (ganz, ganz, ganz am Anfang) kannte ich den Unterschied nicht, genauso, wie ich den Unterschied zwischen Strings und Zahlen nicht kannte und dachte, "das mit den Anfuehrungsstrichen" sei so, wie bei HTML-Attributen (optional)
Doch dafuer achte ich jetzt eigendlich um so mehr darauf, moeglichst klug zu entscheiden, ob ich global oder lokal setze.
So ist es z.B. zur Fehleranalyse gut, wenn fehlertraechtige Zaehler auch (temporaer) global sind. (Fuer onError-Fehlerbehandlung)
Du solltest verstehen, dass man diese sinnvoll benennt.
Wie gesagt: 'fertige' Projekte (, was es in dem Sinn bei mir nicht gibt) sehen anders aus.
Freundliche Grüße
Danke, ebenfalls und noch eine herzlich schoene Nacht,
scherzkeks
Vinzenz
[1] Bzw. meinst du zu wissen - ich bin der Meinung, man kann nichts oder nur sehr wenig "Wissen"
<quote>Nichts ist sicher auf dieser Welt - nicht einmal das</quote>
Ich habs in einem Zitatwiki (wikiquote v.d. Wikimedia Foundation) nicht gefunden
PS: Hast du dir die um Abstaende kleinere RAR-Datei auch mal runtergeladen?
Mach mal bitte und sag mir deinen ersten Eindruck: Da siehst du auch, wofuer ich die Liste (Tabelle) brauche.
Ach ja: Die auskommentierte Tabelle ist uebrigens eine aeltere Version von dem, was dieses Script produzieren soll.
Ich will es gar nicht so veroeffentlichen, sondern als fertige Tabelle.
hi,
begriffe.js Zeile 3: typeOf is not defined,
siehe dazu SELFHTML, typeof.
Das war nur ein Test. Was mache ich falsch?Lies, bitte lies. Lies genau!
Sorry, aber ich erkenne nichts.
Bist du ein scherzkeks, ein ScherzKeks, oder ein sCHerZKekS ...?
(Namen werden in Javascript case sensitive behandelt, und typeOf ist daher nicht gleich typeof.)
gruß,
wahsaga
hi,
hi
begriffe.js Zeile 3: typeOf is not defined,
siehe dazu SELFHTML, typeof.
Das war nur ein Test. Was mache ich falsch?Lies, bitte lies. Lies genau!
Sorry, aber ich erkenne nichts.Bist du ein scherzkeks, ein ScherzKeks, oder ein sCHerZKekS ...?
(Namen werden in Javascript case sensitive behandelt, und typeOf ist daher nicht gleich typeof.)
oh, danke, achso, ja, klar, ok, *rot werd* das waaar... *beschaemt nach Ausrede such*.... also _ich_ kann nichts dafuer ^^
gruß,
danke, ebenfalls,
sCHerZKekS
wahsaga
Hallo
bitte vergleiche:
typeOf is not defined,
SELFHTML, typeof.
Lies genau!
Rueckgabewert sollte doch sicher function sein, oder?
Nö. Der Rückgabewert von alert() ist übrigens stets undefined :-) Das ist allerdings eine andere Geschichte.
Ich habe schon von Anfang an ueberlegt, ob dich stoert, dass ich Klammern benutzt habe, obwohl es hier (vielleicht) nicht dringend notwendig waere...
Nein. Klammern, auch redundante Klammern stören mich nicht.
Und was ich von Anfang an fuer Moeglich hielt, ist, das ich typeOf nur bei Variablen benutzen kann, aber das glaube ich nicht wirklich.
Mit dem Operator typeof steht Ihnen ein Werkzeug zur Typenüberprüfung zur Verfügung.
Wenn Du den Unterschied noch nicht gesehen hast, vergleiche wieder. Lies genau!
Hochdeutsch war meine erste Fremdsprache. Ich lerne immer noch :-)
Wo bist du aufgewachsen? Sprichst du Dialekt? Wo wohnst du?....
Finde es heraus. Es steht im Archiv.
Ach ja, in Datei begriffe.js, Zeile 11, Spalte 3404 verwendest Du
testvar18
statt
trennervar18
Dies ist der Grund für das Anhalten.
Glaubst du? Weisst du?[1] Hast du's ausprobiert?
Was soll ich dazu noch sagen? Warum hast Du es nicht getestet? Ist es mein Code oder ist es Dein Code?
Was würdest Du sagen, wenn Du eine Variable mit etwas undefiniertem initialisieren willst? Mit folgendem Code kannst Du das von Dir beschriebene Verhalten reproduzieren:
alert("Hallo"); // wird ausgeführt
var foo = "bar" + baz; // Erstes Auftreten von baz im Script
alert(foo); // wird nicht ausgeführt
Bei diesem knappen Code schafft die JS-Konsole sogar die Fehlermeldung "baz is not defined", was sie bei Deiner riesig langen Anweisung nicht schafft.
Warum fügst Du nicht jeden zusätzlichen Begriff in einer eigenen Zeile ein, etwa in der Form
+ trenner + "Begriff"
Dein Code wäre wesentlich leichter lesbar, leichter wartbar und solche Fehler würden Dir sofort auffallen. Warum verwendest Du solche langen Zeilen? Welchen Vorteil versprichst Du Dir davon? Kann es sogar sein, dass Deine Zuweisung eine einzige Zeile ist, die mein Editor in 4KB-Häppchen aufteilt?
Naja, da bin ich relativ unbelehrbar und mit meinen 15 Jahren [...]
Das eine kannst Du ändern, das andere ändert sich mit der Zeit von selbst.
Doch dafuer achte ich jetzt eigendlich um so mehr darauf, moeglichst klug zu entscheiden, ob ich global oder lokal setze.
Das ist ganz einfach: So wenig globale Variablen wie möglich, so viele wie nötig. Den Idealfall stellt keine globale Variable dar.
So ist es z.B. zur Fehleranalyse gut, wenn fehlertraechtige Zaehler auch (temporaer) global sind. (Fuer onError-Fehlerbehandlung)
Zählvariablen sind die allerschlechtesten Kandidaten für globale Variablen.
Freundliche Grüße
Vinzenz
Hallo
Hallo,
bitte vergleiche:
typeOf is not defined,
SELFHTML, typeof.Lies genau!
wahsaga hat nen Moment frueher auf absenden geklickt, also habe ichs bei ihm schon bemerkt, danke
Rueckgabewert sollte doch sicher function sein, oder?
Nö. Der Rückgabewert von alert() ist übrigens stets undefined :-) Das ist allerdings eine andere Geschichte.
Stimmt, da war was. Was?
[...]
Hochdeutsch war meine erste Fremdsprache. Ich lerne immer noch :-)
Wo bist du aufgewachsen? Sprichst du Dialekt? Wo wohnst du?....Finde es heraus. Es steht im Archiv.
Morgen
Ach ja, in Datei begriffe.js, Zeile 11, Spalte 3404 verwendest Du
testvar18
statt
trennervar18
Dies ist der Grund für das Anhalten.
Glaubst du? Weisst du?[1] Hast du's ausprobiert?Was soll ich dazu noch sagen? Warum hast Du es nicht getestet? Ist es mein Code oder ist es Dein Code?
Ich habe es zuvor getestet mit ganz anderem Inhalt
Was würdest Du sagen, wenn Du eine Variable mit etwas undefiniertem initialisieren willst? Mit folgendem Code kannst Du das von Dir beschriebene Verhalten reproduzieren:
alert("Hallo"); // wird ausgeführt
var foo = "bar" + baz; // Erstes Auftreten von baz im Script
alert(foo); // wird nicht ausgeführt
>
> Bei diesem knappen Code schafft die JS-Konsole sogar die Fehlermeldung "baz is not defined", was sie bei Deiner riesig langen Anweisung nicht schafft.
Bei mir wars aber so:
~~~javascript
alert("Hallo"); // wird ausgefuehrt
var foo = "bar"; // wird nicht ausgefuehrt
alert(foo); // wird nicht ausgefuehrt
var baz = fooo + "baz"; // erstes Auftreten von fooo, wird nicht ausgefuehrt
Warum fügst Du nicht jeden zusätzlichen Begriff in einer eigenen Zeile ein, etwa in der Form
+ trenner + "Begriff"
Das ist zwar keine Antwort auf deine Frage, aber: Anfangs war alles eine Zeile. Bis UltraEdit mit der Syntax Probleme hatte bei Zeilen"umbruechen" (nicht vorhanden, aber dargestellt) im String.
Da ich die Falsche Syntax erkannte schloss ich darauf als Fehlerursache, dass ich irgendwo ein ' " ' zu viel oder zu wenig hatte.
Als ich dann testweise (da ist wieder der Test^^ bzw. das temporaere)
Zeilenumbrueche (CR/LF) einfuegte erkannte UltraEdit die Syntax und setzte die hervorhebung richtig.
Im Hex-Modus sah ich allerdings, dass bei dem automatischen Zeilenumbruch, der keiner ist, nichts zu sehen war. Der Text ging ganz normal weiter. Daran konnte es also nicht liegen...
Dein Code wäre wesentlich leichter lesbar, leichter wartbar und solche Fehler würden Dir sofort auffallen.
Moeglich... ich habe immer Angst vor Zeilenumbruechen in Strings und allgemein mitten in JavaScript-Anweisungen, obwohl ja jedes white-space mehr oder weniger gleich behandelt werden sollte, oder?
Warum verwendest Du solche langen Zeilen? Welchen Vorteil versprichst Du Dir davon? Kann es sogar sein, dass Deine Zuweisung eine einzige Zeile ist,
war, jetzt sind es ca.6 (?)
die mein Editor in 4KB-Häppchen aufteilt?
welcher?
Naja, da bin ich relativ unbelehrbar und mit meinen 15 Jahren [...]
Das eine kannst Du ändern, das andere ändert sich mit der Zeit von selbst.Doch dafuer achte ich jetzt eigendlich um so mehr darauf, moeglichst klug zu entscheiden, ob ich global oder lokal setze.
Das ist ganz einfach: So wenig globale Variablen wie möglich, so viele wie nötig. Den Idealfall stellt keine globale Variable dar.
Latuernich. wenn ich den Inhalt ausserhalb des Blockes brauche, dann brauche ich ihn, und wenn nicht, dann nicht.
So ist es z.B. zur Fehleranalyse gut, wenn fehlertraechtige Zaehler auch (temporaer) global sind. (Fuer onError-Fehlerbehandlung)
Zählvariablen sind die allerschlechtesten Kandidaten für globale Variablen.
Deshalb steht dort oben
fehlertraechtige
zur Fehleranalyse
(temporaer)
(Fuer onError-Fehlerbehandlung)
Freundliche Grüße
Danke, ebenfalls,
sCHerZKekS
Vinzenz
Bei mir wars aber so:
alert("Hallo"); // wird ausgefuehrt
var foo = "bar"; // wird nicht ausgefuehrt
alert(foo); // wird nicht ausgefuehrt
var baz = fooo + "baz"; // erstes Auftreten von fooo, wird nicht ausgefuehrt
Das ist Quatsch, hast du das ausprobiert?
Ich bekomme alert[Hallo] und dann alert[bar] und dann Fehler: fooo is not defined
> > Warum fügst Du nicht jeden zusätzlichen Begriff in einer eigenen Zeile ein, etwa in der Form
> >
> > `+ trenner + "Begriff"`{:.language-javascript}
> >
...
> > Dein Code wäre wesentlich leichter lesbar, leichter wartbar und solche Fehler würden Dir sofort auffallen.
> Moeglich... ich habe immer Angst vor Zeilenumbruechen in Strings und allgemein mitten in JavaScript-Anweisungen, obwohl ja jedes white-space mehr oder weniger gleich behandelt werden sollte, oder?
Es geht nicht um Zeilenumbrüche im String, sondern das du den String lesbar verkettest. Zeilenumbrüche im String sind nicht erlaubt.
Vinzenz meint so was:
~~~javascript
var teil_1 = 'ein langer Text';
var teil_2 = 'und ncoh einer';
var gesamt = teil_1
+ ' hier kommt noch was'
+ ' und hier ebenfalls '
+ teil_2 + ' und so weiter und so fort'
;
Innerhalb der Anfürhrungszeichen dürfen natürlich keine Umbrüche sein.
Das ist ganz einfach: So wenig globale Variablen wie möglich, so viele wie nötig. Den Idealfall stellt keine globale Variable dar.
Latuernich. wenn ich den Inhalt ausserhalb des Blockes brauche, dann brauche ich ihn, und wenn nicht, dann nicht.
Du kannst auch Rückgabewerte definieren und Block ist falsch, JS kennt nur den Unterschied zwischen innerhalb einer Funktion und ausserhalb.
Ausserdem gibt es noch Objekte. Globale Variabel nur in Ausnahmefällen nötig, vor allem in kurzen Skripten.
So ist es z.B. zur Fehleranalyse gut, wenn fehlertraechtige Zaehler auch (temporaer) global sind. (Fuer onError-Fehlerbehandlung)
Das halte ich auch für Unsinn.
Bei Zählern kommt es in erster Linie auf die Grenzen an, die du überprüfen musst und innerhalb einer Schleife natürlich die Werte/Objekte/Funktionen aber ein Zähler muss immer lokal sein, gerade weil eine Konvention ist i zu benutzen. Falls du dann jemals eine Funktion inerhalb der Schleife aufrufst, die u.U. ebenfalls eine Schleife mit i erzeugt, hast du ein evtl. grosses Problem den Fehler zu finden.
Lokale Variabeln erleichtern dir die Arbeit, auch wenn es etwas mehr Tipparbeit ist, am Schluss bist du (vor alem wenn das Projekt gross ist) länger mit der Fehlersuche beschäftigt.
Struppi.
Hallo Struppi,
[... Javascript-Beispiel ...]
Ich bekomme alert[Hallo] und dann alert[bar] und dann Fehler: fooo is not defined
ich auch.
Vinzenz meint so was:
Im Falle des OP noch viel einfacher:
var alleBegriffeImString = "Addition (JavaScript)"
;
Frage an den OP: Ist das <hr> Absicht?
[... Hinweise aus der Praxis ...]
Freundliche Grüße
Vinzenz
Im Falle des OP noch viel einfacher:
var alleBegriffeImString = "Addition (JavaScript)"
- trennervar18 + "Alertbox (JavaScript)"
- trennervar18 + "Anker (JavaScript)"
- trennervar18 + "Anweisungen (JavaScript)"
- trennervar18 + "<hr>"
// es folgen noch ein paar hundert gleichartiger Zeilen;
Wobei das auch nicht sinnvoll ist join würde sich (wenn man das ganze so lösen will) hier anbieten:
~~~javascript
var alleBegriffe = [
"Addition (JavaScript)",
"Alertbox (JavaScript)",
"Anker (JavaScript)",
"Anweisungen (JavaScript)",
"<hr>",
// es folgen noch ein paar hundert gleichartiger Zeilen
];
//und dann:
var alleBegriffeImString = join(trennervar18, alleBegriffe);
Wobei das eigentlich dann wieder Quatsch ist, da er den String offensichtlich sowieso wieder splittet. Wenn ich das ganze hier richtig verfolgt habe.
Struppi.
Ich werde das alles nach einmal ueberarbeiten und die Trennungsvariable sein lassen und gleich mehrere Array-Eintraege draus machen.
Ich hatte urspruenglich lediglich SELFHTMLs Quickbar und mittels einfachen Ersetzen-Dialog und Fliessbandarbeit daraus mehrere Begriffe in einzelnen Zeilen gemacht. Die habe ich dann wieder zu einer Zeile zusammengefuegt
Struppi.
scherzkeks (schoenen Samstag noch)
Hallo Struppi,
[... Javascript-Beispiel ...]
Ich bekomme alert[Hallo] und dann alert[bar] und dann Fehler: fooo is not defined
ich auch.
Vinzenz meint so was:
Im Falle des OP noch viel einfacher:
var alleBegriffeImString = "Addition (JavaScript)"
- trennervar18 + "Alertbox (JavaScript)"
- trennervar18 + "Anker (JavaScript)"
- trennervar18 + "Anweisungen (JavaScript)"
- trennervar18 + "<hr>"
// es folgen noch ein paar hundert gleichartiger Zeilen;
Ich habs halt andersrum (erst Begriff, dann trennervar)
>
> Frage an den OP: Ist das <hr> Absicht?
Ja, es trennt JavaScript-Begriffe von den restlichen. Die anderen Eintraege dazu sind mir jetzt egal!
>
> [... Hinweise aus der Praxis ...]
>
>
> Freundliche Grüße
Danke nochmal, ebenfalls
scherzkeks
>
> Vinzenz
Also erstmal: Ich habe den Fehler gefunden: UltraEdit aendert typeof automatisch in typeOf. Ich hatte also recht mit "ist nicht meine Schuld" ^^.
Dabei wird da dann immer der Fehler erzeugt.
Bei mir wars aber so:
alert("Hallo"); // wird ausgefuehrt
var foo = "bar"; // wird nicht ausgefuehrt
alert(foo); // wird nicht ausgefuehrt
var baz = fooo + "baz"; // erstes Auftreten von fooo, wird nicht ausgefuehrt
>
> Das ist Quatsch, hast du das ausprobiert?
>
> Ich bekomme alert[Hallo] und dann alert[bar] und dann Fehler: fooo is not defined
Genau! Bei mir dachte ich eben - und deshalb habe ich mich gewundert und hier rein gepostet -, dass eine einfache Variablendefinition nicht funktioniert. Was ich auch tat, es ging nicht. typeOf hatte ich immer wieder verbessert (und mich gewundert, warum da immer wieder eine alte Version der Datei sei, als mir der Fehler beim oeffnen auffiel.). Sobald ich mit dem Cursor (nicht Mauszeiger, sondern Textcursor) von der Stelle "weggehe" verschlimmbessert UltraEdit mich. Wenn es mal ging (, weil ich mit dem Cursor bis zum Speichern an der Stelle blieb?) und ich danach die zuvor entnommene Trennvariable wieder einfuehren oder sonst etwas aendern will, muss ich die Datei neu oeffnen oder meinen Cursor "wegtun". In beiden Faellen wird typeof verschlimmbessert. Ausserdem habe ich jetzt alle Zeichen innerhalb der Strings maskiert.
>
> > > Warum fügst Du nicht jeden zusätzlichen Begriff in einer eigenen Zeile ein, etwa in der Form
> > >
> > > `+ trenner + "Begriff"`{:.language-javascript}
> > >
> ...
>
> > > Dein Code wäre wesentlich leichter lesbar, leichter wartbar und solche Fehler würden Dir sofort auffallen.
> > Moeglich... ich habe immer Angst vor Zeilenumbruechen in Strings und allgemein mitten in JavaScript-Anweisungen, obwohl ja jedes white-space mehr oder weniger gleich behandelt werden sollte, oder?
>
> Es geht nicht um Zeilenumbrüche im String, sondern das du den String lesbar verkettest. Zeilenumbrüche im String sind nicht erlaubt.
Ich habe nichtm mitgedacht. ;)
>
> Vinzenz meint so was:
> [...]
> Innerhalb der Anfürhrungszeichen dürfen natürlich keine Umbrüche sein.
Deshalb wunderte ich mich gerade. (gerade == als ich das Post schrieb).
Ich habs jetzt so:
~~~javascript
alleBegriffeImString = "Begriff000" + trennervar18 +
"Begriff001" + trennervar18 +
"Begriff002" + trennervar18 +
"Begriff003" + trennervar18 +
"Begriff004" + trennervar18 +
"Begriff005" + trennervar18 +
"Begriff006" + trennervar18 +
"Begriff007" + trennervar18 +
"Begriff008" + trennervar18 +
usw.
Vielen Dank nochmal fuer eure Aufmerksamkeit: es lag nicht nur an UltraEdit (typeOf statt typeof) (die Version v. UltraEdit des 2003 erschienenen DHTLM-Referenzbuches von Stefan (Muenz, versteht sich))
[...]
Du kannst auch Rückgabewerte definieren
Stimmt. Die weide ich jedoch i.d.R. sowieso Variablen zu. (So viele (kleine) (Zwischen)Schritte wie moeglich, sodass alert()s dazwischen zeigen, bis wo es funktioniert - ich dachte uebrigens immer, typeOf haette funktioniert und als Rueckgabewert nicht den Typen des Rueckgabewerts der inneren alert()-Box, sondern den/die/das Literal innerhalb der inneren alert()-Box zurueckgegeben - das haette ich als naechstes gefragt)
und Block ist falsch, JS kennt nur den Unterschied zwischen innerhalb einer Funktion und ausserhalb.
C und/oder Java kennen aber Bloecke, oder? (kann weder noch.)
Ausserdem gibt es noch Objekte. Globale Variabel nur in Ausnahmefällen nötig, vor allem in kurzen Skripten.
So ist es z.B. zur Fehleranalyse gut, wenn fehlertraechtige Zaehler auch (temporaer) global sind. (Fuer onError-Fehlerbehandlung)
Das halte ich auch für Unsinn.
Bei Zählern kommt es in erster Linie auf die Grenzen an, die du überprüfen musst und innerhalb einer Schleife natürlich die Werte/Objekte/Funktionen aber ein Zähler muss immer lokal sein, gerade weil eine Konvention ist i zu benutzen. Falls du dann jemals eine Funktion inerhalb der Schleife aufrufst, die u.U. ebenfalls eine Schleife mit i erzeugt, hast du ein evtl. grosses Problem den Fehler zu finden.Lokale Variabeln erleichtern dir die Arbeit, auch wenn es etwas mehr Tipparbeit ist,
genau das wollte ich gerade ansprechen
am Schluss bist du (vor alem wenn das Projekt gross ist) länger mit der Fehlersuche beschäftigt.
Du meinst jetzt bei vielen _globalen_, oder?
Struppi.
scherzkeks (schönen Samstag noch)