Variable im body aufrufen
Sunny
- javascript
0 Christian Kruse0 CaptainSolo0 jan0 Paule
Hallo!
Kann mir jemand sagen, wo hier der Fehler liegt? Ich komm einfach nicht drauf (hab gestern schon gepostet, aber leider den Fehler noch immer nicht gefunden):
head:
<script language="JavaScript">
function browser ()
{
var browser = navigator.appName;
if (browser = "netscape")
{
var bild = "";
}
else
{
var bild = '<img src="../images/image.gif">';
}
}
</script>
(ua. functions ...)
body:
<script language="JavaScript">
document.write(bild)
</script>
Ich bekomm immer die Fehlermeldung "bild ist undefiniert". Kann es daran liegen, dass noch andere functions bzw. auch ein
<script language="JavaScript1.2" src="fw_menu.js"></script>
im head vorkommen?
Bin dankbar für jede Hilfe!
Lg,
Sunny
Hoi,
Kann mir jemand sagen, wo hier der Fehler liegt?
Der Fehler liegt in den verschiedenen Scopes. Du definierst die
Variable in einem if() {}, sie ist nur innerhalb der {} gueltig.
Definiere sie vorher schon, dann sollte es gehen:
<script language="JavaScript">
var bild = "";
function browser() {
var browser = navigator.appName;
if (browser = "netscape") {
bild = "";
}
else {
var bild = '<img src="../images/image.gif">';
}
}
</script>
<script language="JavaScript">
document.write(bild)
</script>
Gruesse aus dem nassen Muenster,
c.j.k
Hoi,
Uups!
else {
var bild = '<img src="../images/image.gif">';
}
Das muss natuerlich
else {
bild = '<img src="../images/image.gif">';
}
heissen ;-)
Gruesse aus dem nassen Muenster,
c.j.k
Du hast "bild" nicht global definiert bzw. es wird kein Wert zurückgegeben...
Gruss,
CS
hi sunny,
ich nehme ja an das die die funktion browser() auch von irgendwo aufrufst, bevor du >document.write(bild);< ausführst ...?
Hallo!
1. Das Problem deines Codes ist, dass du mit der if-Bedingung nicht den Wert von der Variabeln Browser abfragst, sondern ihr einen neuen Wert, und zwar "netscape" zuordnest.
= ist ein Zuweisungsoperator.
Der Vergleichsoperator ist ==
2. Und noch ein Problem.
Beispiel: Wenn du die Seit im Netscape öffnest, dann wird die Variabel bild deklariert. (var bild = "").
Wenn du mit dem Explorer reingehst, wird die Variable nicht deklariert, sondern ihr wird direkt der Wert "<img...>" zugeordnet. Aber eigentlich müsste der IE das trotzdem packen.
Allerdings packt er es nicht, wenn die die Variable bild in den Body geschrieben werden soll bevor die Funktion browser() ausgeführt wird, und das wird sie. Warscheinlich hast du sie im onload-Ereignis des Bodys, oder?
Dann wird erst der script-Code im Body ausgeführt, wenn bild noch gar nicht definiert ist und dann erst die Funktion browser().
(onload wird erst ausgeführt, wenn der ganze Body geladen ist)
Lösung: Mach das onload weg und schreibe den Code der function browser() ohne function in den Scriptteil. So wird er vor allem aufgerufen.
3. Und zu guter letzt: der appName vom Netscape ist glaube ich nicht "netscape" sondern "Netscape".
An den anderen Funktionen kann es nicht liegen.
Ich hoffe das war nicht zu kompliziert...
Hier der Code:
<script language="JavaScript">
var browser = navigator.appName;
if (browser == "Netscape")
{
var bild = "";
}
else
{
var bild = '<img src="../images/image.gif">';
}
</script>
(ua. functions ...)
body:
<script language="JavaScript">
document.write(bild)
</script>
Gruss, Paul
Also ich hab jetzt folgenden Code:
<script language="JavaScript">
function browser()
var bild = "";
{
var browser = navigator.appName;
if (browser == "Netscape")
{
bild = "";
}
else
{
bild = '<img src="../images/bildname.gif">';
}
}
</script>
Jetzt bekomm ich zwar keine Fehlermeldung mehr, aber funktionieren tut es leider auch nicht.
Allerdings hab ich immer noch die function im onload. Wie war das gemeint, mit ohne "function" im Scriptteil? Sowas hab ich noch nie gemacht, wie lautet da die Syntax dann genau? Bekomm mal wieder die Meldung "undefined"!?
Thx for help :)
sunny
Uuups ... natürlich _so_:
<script language="JavaScript">
<!--
function browser()
{
var bild = "";
var browser = navigator.appName;
if (browser == "Netscape")
{
bild = "";
}
else
{
bild = '<img src="../images/bildname.gif">';
}
}
//-->
</script>
Jetzt bekomm ich zwar keine Fehlermeldung mehr, aber funktionieren tut es leider auch nicht.
Allerdings hab ich immer noch die function im onload. Wie war das gemeint, mit ohne "function" im Scriptteil? Sowas hab ich noch nie gemacht, wie lautet da die Syntax dann genau? Bekomm mal wieder die Meldung "undefined"!?
Thx for help :)
sunny
Nein, nicht ganz.
Lass die function browser() einfach weg, genauso wie ich dir den code geschickt habe. Dann wird das Bild bestimmt, bevor der Body geladen wird, und das ist notwendig.
<script language="JavaScript">
<!--
var bild = "";
var browser = navigator.appName;
if (browser == "Netscape")
{
bild = "";
}
else
{
bild = '<img src="../images/bildname.gif">';
}
//-->
</script>
Ja, so hab ichs auch grad probiert, einfach ohne die ganze function-Zeile - es funzt!
Vielen dank für die Hilfe!
Liebe Grüße,
sunny
bitte bitte, war mir ein Vergnügen ;-)
Also ich hab jetzt folgenden Code:
Der ist falsch, das "var bild" steht an der falschen Position (nämlich innerhalb der Funktion, nicht außerhalb). Wenn du einfach Christians Code kopiert hättest, wäre dein Problem schon längst geregelt. ;)
- Sven Rautenberg