Hallo,
und wieder einmal gibts Probleme ;)
um mal wieder ein bisschen mit JavaScript herumzuspielen hab ich folgendes Problem versucht zu lösen:
ich will eine Seite haben, die mir alle anderen Seiten meine Wahl öffnet und diese Kontrollieren kann. Das hab ich auch schon mit normalen Funktionen geschafft. Dann hab ich ein Closure drumgebaut und seitdem Findet er ein HTML-Element angeblich nicht mehr ... irgendwie versteh ich das nicht ganz, da es eindeutung im Quelltext vorhanden ist.
Hier einmal der Quelltext. Der Ort des Fehlers ist markiert.
<html>
<head>
<title></title>
<script type="text/javascript">
~~~~~~javascript
var fenster = {
//Die Adressen aller Fenster
adressen: new Array(
/*"www.dampfer.net",
"www.schueler.cc",
"forum.de.selfhtml.org",
"www.gondal.de/signups/login",
"www.wurzelimperium.de",
"www.die-staemme.de",
"www.pc-labor.hn.vc",
"www.arcor.de",
"www.gmx.de"*/
"www.google.de",
"www.google.de"
),
controlls: null,
offene_fenster: 0,
open: function()
{
content = "<table>";
content += "<tr><td colspan=\"3\">Fensterkontrolle</td></tr>";
fenster.controlls = new Array( fenster.adressen.length );
//Alle Fenster mit den Adressen im Array öffnen
var i = 0;
for( i=0; i<fenster.adressen.length; i++ )
{
adresse = "http://" + fenster.adressen[i] + "/";
bezeichnung = "Fenster_nr_" + i;
fenster.controlls[i] = window.open( adresse, bezeichnung, "" );
//Den Controller für das Fenster schreiben
content += "<tr id=\"elem_" + i + "\">";
content += "<td>" + ( i + 1 ) + ".</td>";
content += "<td>" + adresse + "</td>";
content += "<td><a href=\"#\" onclick=\"fenster.close(" + i + ")\">schliessen</a></td>";
content += "</tr>";
fenster.offeneFenster++;
}
content += "</table>";
document.getElementById( "controller" ).innerHTML = content; // !HIER TRITT DER FEHLER AUF!
//Die Fenster im Abstand von 5 Sekunden prüfen
setTimeout( "fenster.check()", 5000 );
},
check: function()
{
var i = 0;
for( i=0; i<fenster.controlls.length; i++ )
{
if( fenster.controlls[i].closed == true )
{
fenster.controlls[i].close( i );
}
}
setTimeout( "fenster.check()", 5000 );
},
close: function( id )
{
if( fenster.controlls[id].closed == false )
{
fenster.controlls[id].close();
document.getElementById( "elem_" + id ).style.display = "none";
fenster.offeneFenster--;
if( fenster.offeneFenster == 0 )
{
document.body.innerHTML = "Keine Fenster mehr vorhanden<br><br>";
document.body.innerHTML += "<input type=\"button\" value=\"Fenster öffnen\" onclick=\"fenster.open()\">";
}
}
else
{
alert( "Das Fenster ist bereits geschlossen" );
}
}
};
fenster.open();
~~~html
</script>
</head>
<body>
<div id="controller"></div>
</body>
</html>
Die Fehlerkonsole im Firefox 3.0.10 gibt mir folgendes aus:
Fehler: document.getElementById("controller") is null
Quelldatei: file:///C:/\*\*\*\*\*/open.html
Zeile: 50
Könnt ihr helfen?
MfG. Christoph Ludwig
--
Wo die Sprache aufhört, fängt die Musik an...
Selfcode: sh:) fo:) ch:° rl:( br:^ n4:} ie:{ mo:} va:) js:| de:] zu:) fl:( ss:| ls:~
Go to [this](http://pc-labor.hn.vc/Homepage/index.php)