Daisuki: Fehler im Script? Zufallsbild + FadeIn/out

Hallo erstmal.
Also ich hab da so ein kleines Problem und ich hab keine Ahnung, wo der Fehler ist.
Ich habe 2 verschiedene Scripts. Ein Script, welches ein Bild über ein anderes Faded.

  
<!--- Fading script -->  
<script type="text/javascript">  
function SetOpacity(object,opacityPct)  
{  
  // IE.  
  object.style.filter = 'alpha(opacity=' + opacityPct + ')';  
  // Old mozilla and firefox  
  object.style.MozOpacity = opacityPct/100;  
  // Everything else.  
  object.style.opacity = opacityPct/100;  
}  
function ChangeOpacity(id,msDuration,msStart,fromO,toO)  
{  
  var element=document.getElementById(id);  
  var opacity = element.style.opacity * 100;  
  var msNow = (new Date()).getTime();  
  opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;  
  if (opacity<0)  
    SetOpacity(element,0)  
  else if (opacity>100)  
    SetOpacity(element,100)  
  else  
  {  
    SetOpacity(element,opacity);  
    element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",1);  
  }  
}  
function FadeIn(id)  
{  
  var element=document.getElementById(id);  
  if (element.timer) window.clearTimeout(element.timer);  
  var startMS = (new Date()).getTime();  
  element.timer = window.setTimeout("ChangeOpacity('" + id + "',1000," + startMS + ",0,100)",1);  
}  
function FadeOut(id)  
{  
  var element=document.getElementById(id);  
  if (element.timer) window.clearTimeout(element.timer);  
  var startMS = (new Date()).getTime();  
  element.timer = window.setTimeout("ChangeOpacity('" + id + "',1000," + startMS + ",100,0)",1);  
}  
function FadeInImage(foregroundID,newImage,backgroundID)  
{  
  var foreground=document.getElementById(foregroundID);  
  if (backgroundID)  
  {  
    var background=document.getElementById(backgroundID);  
    if (background)  
    {  
      background.style.backgroundImage = 'url(' + foreground.src + ')';  
      background.style.backgroundRepeat = 'no-repeat';  
    }  
  }  
  SetOpacity(foreground,0);  
  foreground.src = newImage;  
  if (foreground.timer) window.clearTimeout(foreground.timer);  
  var startMS = (new Date()).getTime();  
  foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "',1000," + startMS + ",0,100)",10);  
}  
</script>  
<!--- Fading script ende-->  

und dann noch ein Srcipt welches eine Zufallszahl generiert, zu dem dann ein Bild ausgewählt wird.

  
<!-- Bilderwecheslscript -->  
<script type="text/javascript" language="JavaScript">  
function ZufallsBildStart() {  
var ZufallsZahl = Math.floor(Math.random()*3)+1;  
  
document.write('<img src="../desi/change/chris.jpg" id="foregroundimg" border="0" onmouseover="FadeInImage('foregroundimg','../desi/change/chrishover.jpg ','backgrounddiv') onmouseout="FadeInImage('foregroundimg','..desi/change/chris.jpg','backgrounddiv')">');  
}  
else  
{  
     if (ZufallsZahl == 2)  
     {  
     document.write('<img src="../desi/change/pat.jpg">');  
     }  
     else  
     {  
             if (ZufallsZahl == 3)  
             {  
             document.write('<img src="../desi/change/lizz.jpg">');  
             }  
     }  
}  
}  
</script>  
<!-- Bilderwecheslscript Ende -->

So nunja... das 2. Script greift ja auf das 1. zu und eigentlich müsste das doch funktionieren oder?
Der fehler müsste eigentlich hier liegen:

  
document.write(<img src="../desi/change/chris.jpg" id="foregroundimg" border="0" onmouseover="FadeInImage('foregroundimg','../desi/change/chrishover.jpg ','backgrounddiv') onmouseout="FadeInImage('foregroundimg','..desi/change/chris.jpg','backgrounddiv')">');  

Ich finde den Fehler nicht, obwohl einer vorhanden sein muss, denn keines der Bilder wird angezeigt.

Bei einem normalen
document.write('<img src="../desi/change/chris.jpg">');
werden sie angezeigt.

Ich hoffe mir kann hier einer helfen, ich verzweifel fast xD'

  1. hallo Daisuki,

    Ich finde den Fehler nicht, obwohl einer vorhanden sein muss, denn keines der Bilder wird angezeigt.

    Was sagt die Fehlerkonsole?

    ansonsten hilft JQuery.

    grüße,
    henman

    --
    "Sir! We are surrounded!" - "Excellent! We can attack in any direction!"
    sh:( fo:| ch:? rl:° br:> n4:? ie:% mo:) va:| de:] zu:) fl:{ ss:| ls:[ js:|
    1. Ich finde den Fehler nicht, obwohl einer vorhanden sein muss, denn keines der Bilder wird angezeigt.

      Was sagt die Fehlerkonsole?

      Ich finde ihn eben auch nicht >< Oder liegt es doch daran, dass das script auf ein anderes zugreift? Aber es steht ja nach dem anderen und zusammenfügen löst das problem auch nicht.

      Zum Thema fehlerkonsole: Hab keine. Mein Ecplipse ist auf meinem USB Stick, den ich im Moment leider nicht habe.
      Schreibe im Moment alles mit Phrase 5.

      ansonsten hilft JQuery.

      Naja wenn garnichts mehr geht, werd ich das wohl nehmen, wobei ich nicht glaube, dass da das dabei ist, was ich möschte.
      beim Hovern soll ja ein anderes bild eingefaded werden und beim verlassen wieder ausgefaded =/

  2. Hallo,

    Der fehler müsste eigentlich hier liegen:

    document.write('<img src="../desi/change/chris.jpg" id="foregroundimg" border="0" onmouseover="FadeInImage('foregroundimg','../desi/change/chrishover.jpg ','backgrounddiv') onmouseout="FadeInImage('foregroundimg','..desi/change/chris.jpg','backgrounddiv')">');

      
    ich hab mir jetzt nicht alles angeschaut, aber in dieser Zeile verwendest Du einfache Anführungszeichen innerhalb eines Strings der von einfachen Anführungszeichen umschlossen ist. Du musst die inneren Anführungszeichen escapen.  
      
    Gruß, Dennis
    
    1. Hallo,

      Der fehler müsste eigentlich hier liegen:

      document.write('<img src="../desi/change/chris.jpg" id="foregroundimg" border="0" onmouseover="FadeInImage('foregroundimg','../desi/change/chrishover.jpg ','backgrounddiv') onmouseout="FadeInImage('foregroundimg','..desi/change/chris.jpg','backgrounddiv')">');

      
      >   
        
      Das dachte ich mir auch, aber daran liegt es nicht, es wird trotzdem nicht angezeigt.  
      Ich bin mir nicht sicher ob es an den " liegt.... denke eher vielleicht an den '  
      weil wenn ich  
      <img src="LINK"> mache gehts ja.  
      aber hab auch schon versucht die ' mit " einzuklammern aber hilft auch nicht
      
      1. Hallo,

        Der fehler müsste eigentlich hier liegen:

        document.write('<img src="../desi/change/chris.jpg" id="foregroundimg" border="0" onmouseover="FadeInImage('foregroundimg','../desi/change/chrishover.jpg ','backgrounddiv') onmouseout="FadeInImage('foregroundimg','..desi/change/chris.jpg','backgrounddiv')">');

        
        > >   
        >   
        > Das dachte ich mir auch, aber daran liegt es nicht, es wird trotzdem nicht angezeigt.  
        > Ich bin mir nicht sicher ob es an den " liegt.... denke eher vielleicht an den '  
          
        Das sagte ich ja. Hier sind die \_einfachen\_ Anführungszeichen "falsch" oder besser: Sie müssen escaped werden. In Deinem Fall wird Dein String zuerst so geparst:  
          
        ~~~javascript
          
        '<img src="../desi/change/chris.jpg" id="foregroundimg" border="0" onmouseover="FadeInImage('  
        
        

        und anschließend müsste das darauf folgende "foregroundimg" einen Fehler werfen, den Du aber auch in einer Fehlerkonsole sehen müsstest.

        weil wenn ich
        <img src="LINK"> mache gehts ja.
        aber hab auch schon versucht die ' mit " einzuklammern aber hilft auch nicht

        Wie zuvor beschrieben hättest Du auch mit doppelten Anführungszeichen das Problem. Du musst Dich fragen, was zu Deiner Ausgabe gehört und was JavaScript benötigt um einen String zu erkennen.

        Gruß, Dennis

        1. Das sagte ich ja. Hier sind die _einfachen_ Anführungszeichen "falsch" oder besser: Sie müssen escaped werden. In Deinem Fall wird Dein String zuerst so geparst:

          '<img src="../desi/change/chris.jpg" id="foregroundimg" border="0" onmouseover="FadeInImage('

          »»  
          ja das is schon kla, aber wenn ich die mit " eingrenze gehts ja auch nich  
            
          Du aber auch in einer Fehlerkonsole sehen müsstest.  
          eine Fehlerkonsole die ich nicht habe  
            
          
          > was zu Deiner Ausgabe gehört und was JavaScript benötigt um einen String zu erkennen.  
            
          naja die ' werden ja an der stelle benötigt das ist ja das problem
          
          1. naja die ' werden ja an der stelle benötigt das ist ja das problem

            Ja, deshalb musst Du die ja _escapen_, sprich: Mach aus

              
            document.write('Hier steht jetzt ein ' einfaches Anführungszeichen');  
            
            
              
            document.write('Hier steht jetzt ein \' einfaches Anführungszeichen');  
            
            

            Oder, wenn Du

              
            document.write("Hier steht jetzt ein " doppeltes Anführungszeichen");  
            
            

            verwendest, machst Du daraus

              
            document.write("Hier steht jetzt ein \" doppeltes Anführungszeichen");  
            
            

            Einfaches Escaping eben. Das brauchst Du immer, wenn Du den Kontext wechselst.

            Gruß, Dennis

            1. Einfaches Escaping eben. Das brauchst Du immer, wenn Du den Kontext wechselst.

              bzw. wenn Du den Kontext nicht wechseln willst...

            2. Achsoooo nun weiß ich was du meinst *DONG*
              Sorry, ich hab damals nur reines Java gelernt und JavaScript ist da doch etwas adnerst.
              danke für die hilfe =)

  3. Hi,

    <script type="text/javascript" language="JavaScript">
    function ZufallsBildStart() {

    Hier wird die geschweifte Klammer geöffnet, bei function.

    }

    hier wird sie geschlossen, also Ende der function.

    else

    Was bitte soll ein else zu einer function sein?

    So nunja... das 2. Script greift ja auf das 1. zu und eigentlich müsste das doch funktionieren oder?

    Nein, das zweite Script ist syntaktisch falsch, wird also überhaupt nicht funktionieren.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hi,

      Hier wird die geschweifte Klammer geöffnet, bei function.

      }

      hier wird sie geschlossen, also Ende der function.

      else

      Was bitte soll ein else zu einer function sein?

      Entweder es func(s)t, oder es funzt nich ...

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?