Element angeblich nicht gefunden ...
minicrispie
- javascript
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)
Hi,
Die Fehlerkonsole im Firefox 3.0.10 gibt mir folgendes aus:
Fehler: document.getElementById("controller") is null
völlig zu Recht. Ein solches Element gibt es erst viel später.
Cheatah
Hallo,
völlig zu Recht. Ein solches Element gibt es erst viel später.
ach verdammt ... immer diese kleinen Fehler.
Danke!
MfG. Christoph Ludwig
Hallo,
Ein Script hat Zugriff nur auf die Elemente vor dem zugehörigen script-Element
Auch wenn du hier nicht mit Event-Handling arbeitest, sind die verschiedenen Phasen relevant.
Mathias