Matze: http://

Hallo zusammen,

ich frage mich gerade, wieso diese Zeile funktioniert.
document.location.href="http://"+document.getElementById("url").innerHTML;
Denn das // nach http: müsste doch eigentlich den Rest der Zeile auskommentieren.
Im Firefox jedoch wird trotzdem der Code ausgeführt. Woran kann das liegen?
Natürlich will ich, dass der Code ausgeführt wird, doch dieser Code klappt nicht:
setTimeout('document.location.href="http://"+document.getElementById("wb"+wb+"url").innerHTML;',800);
Ich weiss nicht, ob es am doubleslash liegt, aber das funktioniert nicht.

Schon mal im voraus danke für eure Hilfe,
   Matze

  1. setTimeout('document.location.href="http://"+document.getElementById("wb"+wb+"url").innerHTML;',800);

    Und was sagt die Fehlerkonsole? Ohne zu wissen, ob die ID existiert und was in wb steht,ist es unmöglich, dass es jemand, ausser dir, testet.

    1. Ich hab es jetzt mit einer neuen Funktion gemacht und es funktioniert. (Danke, molily!)

        
      function weiterleitung(wb)  
         {  
         document.location.href = "http://"+document.getElementById("wb"+wb+"url").innerHTML;  
         }  
        
      setTimeout("weiterleitung("+wb+");",800);  
      
      

      Danke natürlich auch an die anderen, ich habe jetzt den Kontext-Beitrag durchgelesen und bin um einiges schlauer als vorher.
      Danke!

  2. Hallo!

    document.location.href="http://"+document.getElementById("url").innerHTML;
    Denn das // nach http: müsste doch eigentlich den Rest der Zeile auskommentieren.

    Nein. // leitet keinen Kommentar ein, wenn es innerhalb eines Strings (String-Literals) auftritt. Ich kann ohne Probleme // innerhalb eines Strings verwenden:

    var meinString = "//";

    Das ist einfach ein String mit zwei Slashes drin; der JavaScript-Parser erkennt sie nicht als Beginn eines einzeiligen Kommentars.

    Natürlich will ich, dass der Code ausgeführt wird, doch dieser Code klappt nicht:
    setTimeout('document.location.href="http://"+document.getElementById("wb"+wb+"url").innerHTML;',800);

    Was heißt, es funktioniert nicht? Leitet der Browser nicht weiter, aber auf eine falsche Seite? Leitet der Browser gar nicht weiter? Gibt es Fehlermeldungen auf der JavaScript-Konsole?

    Im Allgemeinen sollte man eine Funktion anstatt eines Strings an setTimeout übergeben, das spart einem viel Ärger und erleichtert da Schreiben:

    var weiterleitung = function() {  
      location.href = "http://" + document.getElementById("wb" + wb + "url").innerHTML;  
    };  
    setTimeout(weiterleitung, 800);
    

    Wenn hier Fehler auftreten, so würde ich Zwischenvariablen einfügen und mir den Inhalt auf der JavaScript-Konsole ausgeben lassen. Auf der Konsole lässt sich auch der Programmablauf nachvollziehen, so können Fehler einfacher gefunden werden. Falls irgendwelche Exceptions auftreten, so sind diese ebenfalls auf der Konsole sichtbar.

    Beispiel:

    var weiterleitung = function() {  
      console.log('weiterleitung aufgerufen');  
      var id = 'wb' + wb + 'url';  
      console.log('id:', id);  
      var element = document.getElementById(id);  
      console.log('element:', element);  
      var html = element.innerHTML;  
      console.log('html:', html);  
      var url = 'http://' + html;  
      console.log('url:', url);  
      location.href = url;  
    };  
    console.log('starte timeout');  
    setTimeout(weiterleitung, 800);
    

    Das ist jetzt stark aufgedröselt, aber so sieht man sofort, ob die einzelnen Operationen die gewünschten Resultate liefern und die Weiterverarbeitung möglich ist.

    Grüße,
    Mathias

  3. Ich weiss nicht, ob es am doubleslash liegt, aber das funktioniert nicht.

    Das liegt am Kontext. Lies dir mal den Artikel über Kontextwechsel durch, das hilft!

    MfG
    bubble

    --
    If "god" had intended us to drink beer, he would have given us stomachs. - David Daye