Lars: dynamisches javascripting geht nicht

hallo
ich habe ein recht komplexes problem
ich habe in einer datenbank künstler und in einer seperaten tabelle bilder zu den einzelnen künstlern
wenn ich nun auf meiner webseite (ajax-stil) über js-->php-->mysql die bilder versuche zu laden so funktioniert nach einem seitenreload die slideshow (javascript-effekt opacity) der geladenen bilder nur einmal !

um das zu verdeutlichen, der komplette head-bereich der webseite (scripts)

Code:

<head>
<title>Apfel-Eingang_199896l</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">

a=1.00;
var bilder = new Array();
act = 0;
sema=0;

function fadeout(){
sema=1;
a-=0.05;

if(a>=0){
picframe.style.opacity = a;
setTimeout('fadeout()',10);
}else{
picframe.style.opacity=0;
a=0;
picchange();
}
}

function picchange(){
var x = bilder[act];
picframe.src="";
picframe.src=x;
setTimeout('fadein()', 500);
}

function fadein(){

a+=0.05;

if(a<=1){
picframe.style.opacity = a;
setTimeout('fadein()',10);
}else{
picframe.style.opacity=1;
a=1.00;
sema=0;
}
}

function main(){
picframe.onClick="main()";
if(sema==0)
{
fadeout();
if(act<bilder.length-1)
 {
 act = act + 1;
 }else{
 act=0;
 }
}
}

function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function sndReq(action, param) {
    http.open('get', 'control.php?action='+action+'&param='+param);
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
        var update = new Array();

if(response.indexOf('|' != -1)) {
  update = response.split('|');
   for(i=0; i<update.length; i+=2) {
   if(update[i]!='bilder')
   {
   document.getElementById(update[i]).innerHTML = update[i+1];
   }else{
   bilder = update[i+1].split(';');
   }
   }
        }
    }
}
</script>
</head>

nun die control.php die die js-xml-requests annimmt und für die db-kommunikation sorgt

Code:

<?
 switch($_REQUEST['action'])
{

default:

include ("cms/mysqlconnect.php");

$abfrage = "SELECT Text FROM links WHERE Link LIKE '".$_REQUEST['action']."';";

$result = mysql_query($abfrage);

if (!$result) {
     $Dateiinhalt = 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
     exit;
 }
 $row = mysql_fetch_row($result);

$Dateiinhalt = $row[0];

mysql_close($verbindung);

echo "text|$Dateiinhalt";

break;

case 'kuenstlerbild':

include ("cms/mysqlconnect.php");

$abfrage = "SELECT text FROM kuenstler WHERE id LIKE '".$_REQUEST['param']."';";

$result = mysql_query($abfrage);

if (!$result) {
     $Dateiinhalt = 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
     exit;
 }
 $row = mysql_fetch_row($result);

$Dateiinhalt2 = $row[0];

$abfrage = "SELECT url FROM bilder WHERE id LIKE '".$_REQUEST['param']."' AND first LIKE '1';";

$result = mysql_query($abfrage);

if (!$result) {
     $Dateiinhalt = 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
     exit;
 }
 $row = mysql_fetch_row($result);

$Dateiinhalt3="

<center>
<img name="picframe" onClick="main()" visibility="visible" src=".$row[0]." style="width:354; height:446">
</center>

";

$abfrage = "SELECT url FROM bilder WHERE id LIKE '".$_REQUEST['param']."';";

$result = mysql_query($abfrage);

if (!$result) {
     $Dateiinhalt = 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
     exit;
 }

$pfade="";

while($row = mysql_fetch_array($result))
 {
 $pfade .= $row[0].";";
 }

$pfade=substr($pfade,0,strlen($pfade)-1);

mysql_close($verbindung);

echo "picplace|$Dateiinhalt3|text|$pfade|bilder|$pfade";

break;

}
?>

eigentlich sollte in das feld text nicht die $pfade ausgegeben werden, sondern der text, das ist nur als kontrollmöglichkeit gedacht
die pfade werden aber korrekt ausgegeben (pfad;pfad;pfad)

die datenbank wird korrekt ausgelesen, daran liegt es nicht
ich weiß nicht woran es liegt, aber wenn ich die seite aufrufe von meinem lokalen webserver aus, dann wird die animation beim ersten mal richtig angezeigt und beim zweiten mal geht nichts mehr bei einem klick auf das bild
was läuft da falsch ?
danke schon im vorraus

  1. hallo
    hier eine kleine praktische verdeutlichung des problems
    einmal auf http://www.healthxnet.de/apfel/ gehen
    dann auf künstler, dann auf künstler 1
    und dann mal auf das bild (A) im linken teil klicken (animation ist zu sehen)
    dann auf workshops oder wettbewerbe oder irgendwas anderes als künstler klicken und dann wieder auf künstler , künstler 1,
    und siehe da
    die animation geht nichtmehr
    und es liegt nicht daran, dass das bild nicht ausgeblendet wird !
    wenn ich dem script echo "picplace||text|$Dateiinhalt"; gebe, dann gibts das gleiche problem
    ich vermute, dass es was mit dem array bilder zu tun hat
    kleine anmerkung noch: da ich css-style OPACITY nutze, dürfte die animation nur im firefox / netscape / mozilla gehen und nicht im internet explorer
    grüße
    lars

    1. hier eine kleine praktische verdeutlichung des problems
      einmal auf http://www.healthxnet.de/apfel/ gehen
      dann auf künstler, dann auf künstler 1
      und dann mal auf das bild (A) im linken teil klicken (animation ist zu sehen)

      Woran es genau liegt kann ich dir nicht sagen, aber die Seite ist im Quirksmodus, was ein Problem ist und du kriegst ja auch schon ein paar Warnungen in der Fehlerkonsole.
      Ich würde das mit dem Quirksmodus erstmal ändern.

      Struppi.

      1. sicherlich, aber um ehrlich zu sein, wer hält sich heutzutage schon an W3C ?
        ich hab noch keine seite gesehen die fehlerfrei durch den w3c check läuft
        und ich bezweifle irgendwie, dass das den fehler behebt :(
        noch einen tipp ?
        danke
        lars

        1. sicherlich, aber um ehrlich zu sein, wer hält sich heutzutage schon an W3C ?
          ich hab noch keine seite gesehen die fehlerfrei durch den w3c check läuft

          Darum geht es gar nicht. Es geht darum dass deine Seite Fehler hat und du hast ein Problem, anstatt über die Sinnhaftigkeit vom W3c Check (ich nehme an du meinst den Validator? Den ich überhaupt nicht genutzt habe)) zu diskutieren wäre es sinnvoller möglichst viele Fehler zu beseitgen. Der Quirksmodus hat nichts mit W3C zu tun, genauso wenig wie die Fehlermeldungen im Browser.

          und ich bezweifle irgendwie, dass das den fehler behebt :(

          Du bezweifelst, dass wenn du Fehler behebst deine Fehler behoben werden????

          noch einen tipp ?

          Schwer möglich, wenn du kein Interesse an der Fehlerbeseitigung hast.

          Struppi.

          1. verzeih mir meine jugendliche ungläubigkeit *g*
            du hattest vollkommen recht
            es lag am document.getElementById('')
            ich hab stattdessen direkt die id angesprochen was fehlerhaft war
            ich bin fasziniert
            es geht, yipeah :) danke

            1. verzeih mir meine jugendliche ungläubigkeit *g*
              du hattest vollkommen recht

              Natürlich, und den Quirksmode willst du unbedingt beibehalten?

              Struppi.