molily: http://

Beitrag lesen

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