torsten: script invalid

Beitrag lesen

moin!

schön, dass du nicht so leicht aufgiebst ;-)

Ich bin mal direkt und sage, dass dein Klammerstil gewöhnungsbedürftig ist.

das ist die art von direktheit gegen die niemad was einzuwenden haben kann, danke dafür!

Ich erkenne nicht, warum die öffnende Klammer bei if(toFocus) auf der gleichen Höhe wie das if beginnt, dann aber kein Zeilenumbruch stattfindet, später bei if(this.blur) dann aber eins weiter eingerückt ist und ein Umbruch da ist (da wenigstens einheitlich mit dem for), ...

ich verstehe anhand deiner erläuterung, dass die klammersetztung quasi die "verschachtelung" des codes kennzeichnet, obwoh ich erst http://de.selfhtml.org/javascript/sprache/regeln.htm@title=hier bin. die klemmer ist also das strukturmerkmal. allerdings sind mir schon scripte über den weg gelaufen, die einfach in einer reihe notiert waren, ähnlich der kommandozeile bei excel...

Entscheide dich, wo du öffnende und schließende Klammern haben willst. Weitverbreitet sind folgende Stile:

for (...) {

// tue etwas
}


>   
> und  
> ~~~javascript

for (...)  

> {  
>   // tue etwas  
> }  
> 

ich les mal selfhtml weiter und werde mich für eine option entscheiden

Du kannst dir natürlich etwas eigenes ausdenken, aber das da oben ist sehr schwer zu lesen.

muss nicht unbedingt sein.

Die anonyme Funktion ist die Funktion, welches du dem onmouseup-Handler zuweist. Das gleiche Ergebnis wäre

var myHandler = function() {
  if(this.blur) {
    this.blur();
  }
};

for(var i=0;i<document.links.length;i++) {
  document.links[i].onmouseup = myHandler;
}

  
hm, erst mal vertau ich deinen worten, ich werde mal versuchen das zu verstehen... d.h. also, dass die festlegung der lokalen variable außerhalb der funktion statt findet und der zweite teil in die ursprüngliche funktion eingebastelt gehört... werd's versuchen.  
  

> Da musst du dir aber immer sicher sein, was das "this" in diesem Zusammenhang ist. In diesem Beispiel bezieht sich "this" innerhalb von myHandler immer auf das Element, auf dem der Handler ausgelöst wurde. Wenn du da mehr wissen willst, lies dir die Artikel von molily zu dem Thema durch ([Javascript: Event-Handling](http://molily.de/js/event-handling-grundlagen.html)).  
  
im laufe der nächsten jahre werde ich sicher die gesamte doku von molily durch gewurschtelt haben, sieht nämlich sehr interessant aus und scheint auch für laien gemacht (oder?) danke für den link.  
  

> In der Originalmeldung steht ja auch Problem und nicht Fehler. Das gleiche gilt im Übrigen für die Sache mit Funktionsdefinitionen innerhalb von Schleifen. Du hast gültiges JavaScript, du könntest also schon aufhören.  
  
nö  
  

> Bei globalen Variablen ist es aber so, dass du damit zwar kurzfristig dein Problem löst, du dir aber gleichzeitig langfristige Probleme einhandelst.  
> Einfaches Beispiel:  
>   
> ~~~javascript
  

> // rufe zehnmal die Funktion do_something() auf, und übergib als Parameter die Zählvariable.  
> for (i=0; i < 10; ++i) {  
>    do_something(i);  
> }  
>   
> /*  
>   Gib 3 alert()-Meldungen aus, welche den übergebenen Parameter und die fortlaufende Nummer der Meldung enthalten.  
> */  
> function do_something(v) {  
>   for (i=0; i < 3; ++i) {  
>     alert("Tue etwas für v=" + v + ", i=" + i);  
>   }  
> }  
> 

Bevor du weiterliest, überlege dir, was du von dem Code erwartest und dann probier ihn aus.

ich war schon mal in böhmen... da gibt es solche dörfer...

werde mich dransetzen

(Es wird nicht 10x3 = 30mal ein Alert ausgegeben, sondern du hast eine Endlosschleife. Warum?)

n.k.a.! (= noch keine ahnung!)

Nun stehen hier die Schleife und die Funktion nahe beieinander und man kann den Fehler schon direkt ablesen.

wenn ich dazu fähig wär...

Aber stell dir mal vor, dass die Funktion irgendwo ganz anders ist (oder gar nicht von dir und du dir die Funktion gar nicht anschaust!).

verstehe, da ich (noch) immer auf fremdsripten angewiesen bin und das eine oder andere script echt übel aussieht (schau dir shadowbox.js in meinem wurzelverzeichnis an wenn du lust hast) kann man schnell über derartige macken stolpern. ich hoffe nur, dass ich mir mit dem "perfekten" javascript nicht einen gewünschten aber bisher unerklärlichen effekt auf meiner seite zermatsche.

Wenn mindestens ein Auftreten (besser: beide) von i als lokal deklariert werden (indem du ein "var" davor stellst), tritt der Fehler nicht auf.

um nicht immer wie ein vollhonk da zu stehen und um zu verstehen was gesagt wird wenn mir leute wie du helfen werde ich mich jetzt ernsthaft mit js beschäftigen... das dauert aber, ich bin nicht sonderlich begabt mit sowas umzugehen und habe auch nicht allzu viel zeit dafür übrig (immerhin hab ich's neun jahre geschafft drum herum zu kommen, so lange betreibe ich schon eine eigene seite, die nur dasnk javascript und vielen helferlein, die kostenlos ihr knoff hoff zur verfügung stellen) leider kann ich erst nächsten dienstag wieder richtig rumbasteln, ich hoffe bis dahin ist diese diskussion noch nicht im archiv.

mfg torsten

--
Shakespeare sagt: To be or not to be / Sartre sagt: To be is to do / Camus sagt: To do is to be / Sinatra singt: Do be do be do