Mario: Script funktioniert im Firefox, aber nicht im IE7

Hallö zusammen,

ich habe eine merkwürdige Konstellation. Mein Javascript funktioniert im Firefox, im Internet Explorer (7.0) jedoch nicht. Gibt es eine Möglichkeit, im Internet Explorer rauszufinden, wo der Fehler steckt (ein umgebendes Javascript wird ohne Probleme ausgeführt, nur das nicht, was genau auf der Seite aufgerufen wird). Testausgaben haben gezeigt, dass die Funktion schon immer aufgerufen wird. Ausgetauscht wird leider nichts. (zur Erklärung: ich will per Javascript im laufenden Betrieb Grafiken auf der Seite austauschen). Gibt es ne Möglichkeit, irgendwo den Fehler zu suchen? Bin für jede Hilfe dankbar.

Mario

Hier die Seite:
www.datadruck.com --> dann auf Referenzen klicken
btw: wieso kann ich im neuen IE das Mausrad nicht mehr zum scrollen nehmen?

und hier das Skript:
function referenzzufallszahlengenerator(min, max)
 {
         var zahl = min - 1;
         while (zahl < min)
               {
               zahl = Math.floor(Math.random()*(max+1));
               }
         return zahl;
         }

function referenzenersetzen()
 {
         // position auswaehlen, die ersetzt werden soll
 referenzzuersetzen = referenzzufallszahlengenerator(0, 19);
         // text aus der seite holen, damit man schauen kann, was ersetzt werden soll
 titelreferenzzuersetzen = document.getElementById('referenz'+referenzzuersetzen).innerHTML;

// text extrahieren, um danach dann im array zu suchen
         startindex = titelreferenzzuersetzen.indexOf("src=")+18;
         endindex = titelreferenzzuersetzen.lastIndexOf("" alt");
         zusuchen = titelreferenzzuersetzen.substring(startindex,endindex);

//schauen, ob das neue objekt bereits woanders angezeigt wird
         doppelt = 0;

while (doppelt == 0)
               {
               referenzersetztdurch = referenzzufallszahlengenerator(0, <?php echo $z-1;?>);
               if (a[referenzersetztdurch][1] == 0)
                 {
                  doppelt = 1;
                  }
               }

// suchen nach dem zu ersetzenden element im array - anschliessend wird es als nicht
         // gesetzt markiert
         // die neue grafik wird eingeblendet und als gesetzt markiert
         for (i = 0; i < <?php echo $z;?>; i++)
           {
             if (a[i][0].indexOf(zusuchen) > 0)
                {
                document.getElementById('referenz'+referenzzuersetzen).innerHTML = a[referenzersetztdurch][0];
                a[i][1] = 0;
                a[referenzersetztdurch][1] = 1;
                }
             }
         window.setTimeout("referenzenersetzen()", 2000);
         }

window.setTimeout("referenzenersetzen()", 2000);

  1. Hallole,

    ich habe eine merkwürdige Konstellation. Mein Javascript funktioniert im Firefox, im Internet Explorer (7.0) jedoch nicht.

    das finde ich soo außergewöhnlich nicht.

    Gibt es eine Möglichkeit, im Internet Explorer rauszufinden, wo der Fehler steckt (ein umgebendes Javascript wird ohne Probleme ausgeführt, nur das nicht, was genau auf der Seite aufgerufen wird). Testausgaben haben gezeigt, dass die Funktion schon immer aufgerufen wird.

    Kann man nur generell sagen: Probehalber vor und nach einer "verdächtigen" Stelle eine Kontrollausgabe mit alert() machen. Das ist zwar mühsam, weil man nur in recht kleinen Schritten weiterkommt - aber wenn's denn sein muss ...
    Wobei ich mich natürlich erst einmal frage: Gibt es keinerlei Fehlermeldung?
    Die sind zwar im IE mit Vorsicht zu genießen, aber es wäre wenigstens mal ein Anhaltspunkt.

    www.datadruck.com --> dann auf Referenzen klicken

    Ähm, du meinst http://www.datadruck.com/? Nee, wohl kaum da diese Seite bis auf eine Grafik leer ist, da steht nirgends was von "Referenzen". Es war etwas mühsam, bis ich herausgefunden habe, dass du vermutlich http://www.datadruck.com/webseite/referenzen.php meinst. Gib doch bitte gleich die richtige Adresse an, anstatt solche Ratespielchen zu veranstalten.
    Solche Brückenseiten wie hier deine Startseite sind übrigens recht lästig.

    function referenzzufallszahlengenerator(min, max)
    {
             var zahl = min - 1;
             while (zahl < min)
                   {
                   zahl = Math.floor(Math.random()*(max+1));
                   }
             return zahl;
             }

    Die Logik dieser Funktion erschließt sich mir ehrlich gesagt nicht. Ich vermute, du möchtest eine ganzzahlige Zufallszahl im Intervall [min..max] haben? Dann nimm doch den Klassiker:
      zahl = min + Math.floor(Math.random()*(max-min+1));

    titelreferenzzuersetzen = document.getElementById('referenz'+referenzzuersetzen).innerHTML;
             // text extrahieren, um danach dann im array zu suchen
             startindex = titelreferenzzuersetzen.indexOf("src=")+18;
             endindex = titelreferenzzuersetzen.lastIndexOf("" alt");
             zusuchen = titelreferenzzuersetzen.substring(startindex,endindex);

    Auweia. Das würde ich ganz anders lösen: Ich würde mir mit getElementsByTagName('img')[referenzzuersetzen] eine Referenz (hier im technischen Sinn!) auf das img-Element holen und dann einfach dessen src- und alt-Eigenschaft neu setzen. Keine Hampelei mit innerHTML.

    referenzersetztdurch = referenzzufallszahlengenerator(0, <?php echo $z-1;?>);

    Und wenn das wirklich in deinem Javascript-Code steht, hast du noch ein viel größeres Problem. Dann funktioniert nämlich dein PHP nicht - andernfalls wäre <?php ... ?> durch die Ausgabe des Scripts ersetzt.

    for (i = 0; i < <?php echo $z;?>; i++)

    Dito.

    Ich bin nicht sicher, wo nun tatsächlich dein Problem liegt, weil ich deinen JS-Code reichlich kompliziert und verworren finde. Wie gesagt: Ich empfehle hier den Ansatz über DOM, der hier sogar erheblich einfacher wäre.

    So long
     Martin

    --
    Schildkröten können mehr über den Weg berichten als Hasen.
    1. hi erstmal,

      und vielen dank für die antwort.

      Wobei ich mich natürlich erst einmal frage: Gibt es keinerlei Fehlermeldung?
      Die sind zwar im IE mit Vorsicht zu genießen, aber es wäre wenigstens mal ein Anhaltspunkt.

      im firefox die javascript konsole funzt prächtig. die sagt no felher. im ie kommt eine zeilenangabe aber ich weiss nicht, wie ich die ausführlicher machen kann. wenn da jemand was weiss würde vielleicht allein das helfen.

      function referenzzufallszahlengenerator(min, max)
      {
               var zahl = min - 1;
               while (zahl < min)
                     {
                     zahl = Math.floor(Math.random()*(max+1));
                     }
               return zahl;
               }

      Die Logik dieser Funktion erschließt sich mir ehrlich gesagt nicht. Ich vermute, du möchtest eine ganzzahlige Zufallszahl im Intervall [min..max] haben? Dann nimm doch den Klassiker:
        zahl = min + Math.floor(Math.random()*(max-min+1));

      richtig. zufallszahl im intervall. abgeschrieben aus nem js buch.

      titelreferenzzuersetzen = document.getElementById('referenz'+referenzzuersetzen).innerHTML;
               // text extrahieren, um danach dann im array zu suchen
               startindex = titelreferenzzuersetzen.indexOf("src=")+18;
               endindex = titelreferenzzuersetzen.lastIndexOf("" alt");
               zusuchen = titelreferenzzuersetzen.substring(startindex,endindex);

      Auweia. Das würde ich ganz anders lösen: Ich würde mir mit getElementsByTagName('img')[referenzzuersetzen] eine Referenz (hier im technischen Sinn!) auf das img-Element holen und dann einfach dessen src- und alt-Eigenschaft neu setzen. Keine Hampelei mit innerHTML.

      naja, ich dachte ich nutze das DOM. ich will zufällig die position bestimmen, die ersetzt werden soll. dann will ich die grafik austauchen und das alt und das title tag. und statt mühselig 3mal zu tauschen nehm ich einfach den inhalt des elternelements, das ist die ganze grafik. fertig. die vorhandenen grafiken sind in einem array gespeichert, dort steht auch, ob sie schon einmal angezeigt werden oder ob sie noch frei sind - die bilder dürfen nämlich nicht doppelt vorkommen.

      referenzersetztdurch = referenzzufallszahlengenerator(0, <?php echo $z-1;?>);

      Und wenn das wirklich in deinem Javascript-Code steht, hast du noch ein viel größeres Problem. Dann funktioniert nämlich dein PHP nicht - andernfalls wäre <?php ... ?> durch die Ausgabe des Scripts ersetzt.

      keine angst. das ist der original quellcode. hab da beim kopieren nicht aufgepasst aber der interpretierte code steht ja im quelltext. dor dürfte wohl derzeit die zahl 83 stehen...

      wie gesagt, vom algorithmus her funktioniert es im firefox fehlerfrei. und zwar seit stunden. nur im ie halt nicht. bemerkenswert ist dabei aber, dass im ie schon sämtliche anderen javascripts funktionieren, die auf der seite sind. (mit einem ähnlichen algorithmus werden dort noch ganz andere bilder ausgetauscht).

      1. und vielen dank für die antwort.

        Wobei ich mich natürlich erst einmal frage: Gibt es keinerlei Fehlermeldung?
        Die sind zwar im IE mit Vorsicht zu genießen, aber es wäre wenigstens mal ein Anhaltspunkt.

        im firefox die javascript konsole funzt prächtig. die sagt no felher. im ie kommt eine zeilenangabe aber ich weiss nicht, wie ich die ausführlicher machen kann. wenn da jemand was weiss würde vielleicht allein das helfen.

        Die Zeilenangabe entspricht der Zeile wo der Fehler ist +1

        Auweia. Das würde ich ganz anders lösen: Ich würde mir mit getElementsByTagName('img')[referenzzuersetzen] eine Referenz (hier im technischen Sinn!) auf das img-Element holen und dann einfach dessen src- und alt-Eigenschaft neu setzen. Keine Hampelei mit innerHTML.

        naja, ich dachte ich nutze das DOM. ich will zufällig die position bestimmen, die ersetzt werden soll. dann will ich die grafik austauchen und das alt und das title tag. und statt mühselig 3mal zu tauschen nehm ich einfach den inhalt des elternelements, das ist die ganze grafik. fertig.

        Naja, du nutzt nicht DOM, sondern innerHTML was ziemlich das gegenteil davon ist. Das funktioniert, weil kein Browserhersteler an diesem M$ spezifischen Eigenschaft vornbeikommt.

        Eine Grafik läßt sich sehr gut und schon seit frühsten Browserzeiten, ansprechen und die Eigenchaften ändern. Das was du machst ist, wie Martin schon sagte, Hampelei.

        Und wenn das wirklich in deinem Javascript-Code steht, hast du noch ein viel größeres Problem. Dann funktioniert nämlich dein PHP nicht - andernfalls wäre <?php ... ?> durch die Ausgabe des Scripts ersetzt.

        keine angst. das ist der original quellcode. hab da beim kopieren nicht aufgepasst aber der interpretierte code steht ja im quelltext.

        Das ist der einzige Code der für ein JS Problem interessiert und wenn du da irgendwelche Anpassungen machst, ist es natürlich nur schwer möglich den Fehler zu finden. Ich hab zumindest keinen gesehen.

        Ein Grund für dein Fehler könnte sein, dass du überall globale Variabeln verwendest, der IE ist da manchmal emfindlicher. Ich krieg übrigens Fehlermeldungen in meinem Firefox, die aber nichts mit dm Problem zu tun haben.

        Der ganze Code sieht für mich sehr sehr umständlich aus.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. Hallo,

          Die Zeilenangabe [im IE] entspricht der Zeile wo der Fehler ist +1

          das habe ich jetzt schon öfter gelesen - ist das unter allen Umständen so? Oder ist das versionsabhängig? In meinem alten 5.5er führt mich die in der Fehlermeldung genannte Zeilennummer nämlich tatsächlich meist korrekt zur fehlerhaften Zeile.

          Eine Grafik läßt sich sehr gut und schon seit frühsten Browserzeiten, ansprechen ...

          Ja, an den Zugriff über das images-Objekt dachte ich auch erst. Aber wenn ich nur auf die Grafiken in einem bestimmten Kontext (Elternelement) zugreifen will, dann ist das wohl ein Schuss ins Knie. Dann bin ich mit getElementsByTagName(), angewendet auf das Elternelement, besser bedient, oder? ;-)

          Der ganze Code sieht für mich sehr sehr umständlich aus.

          Den Eindruck hatte ich auch ...

          Ciao,
           Martin

          --
          F: Was ist eigentlich aus deinem schlimmen Durchfall geworden?
          A: Mein Arzt hat mir Valium verschrieben.
          F: Und das hilft?
          A: Naja, ich mach mir immer noch in die Hose. Aber inzwischen ist es mir egal.
          1. Die Zeilenangabe [im IE] entspricht der Zeile wo der Fehler ist +1

            das habe ich jetzt schon öfter gelesen - ist das unter allen Umständen so? Oder ist das versionsabhängig? In meinem alten 5.5er führt mich die in der Fehlermeldung genannte Zeilennummer nämlich tatsächlich meist korrekt zur fehlerhaften Zeile.

            Wenn eine Zeilenummer angegeben ist schon, ich kenn das vom IE 4 auch schon so. Es ist schwierig, wenn man mehrere (und evtl. noch dynamisch) eingebundenen Skripte hat, rauszufinden, welche Datei gemeint ist.

            Eine Grafik läßt sich sehr gut und schon seit frühsten Browserzeiten, ansprechen ...

            Ja, an den Zugriff über das images-Objekt dachte ich auch erst. Aber wenn ich nur auf die Grafiken in einem bestimmten Kontext (Elternelement) zugreifen will, dann ist das wohl ein Schuss ins Knie. Dann bin ich mit getElementsByTagName(), angewendet auf das Elternelement, besser bedient, oder? ;-)

            ja ;-)
            allerdings sind in diesem Fall die Eigenschaften die Gleichen, daher mein Link auf die Imagecollection um zu zeigen wie er die Eigenschaften ändern kann.

            Struppi.

            --
            Javascript ist toll (Perl auch!)
        2. hallö,

          Die Zeilenangabe entspricht der Zeile wo der Fehler ist +1

          jo, das bringt mich eben gerade nicht weiter. der quelltext sieht ja ganz anders aus, da mit include noch diverse andere dateien reingeladen werden und auch das array selber dynamisch aus der datenbank kommt. daher auch noch die php reste im quelltext. gibt es keinen weg, im ie den fehler genauer anzusehen, so wie die js konsole im ff?

          Auweia. Das würde ich ganz anders lösen: Ich würde mir mit getElementsByTagName('img')[referenzzuersetzen] eine Referenz (hier im technischen Sinn!) auf das img-Element holen und dann einfach dessen src- und alt-Eigenschaft neu setzen. Keine Hampelei mit innerHTML.

          naja, ich dachte ich nutze das DOM. ich will zufällig die position bestimmen, die ersetzt werden soll. dann will ich die grafik austauchen und das alt und das title tag. und statt mühselig 3mal zu tauschen nehm ich einfach den inhalt des elternelements, das ist die ganze grafik. fertig.

          Naja, du nutzt nicht DOM, sondern innerHTML was ziemlich das gegenteil davon ist. Das funktioniert, weil kein Browserhersteler an diesem M$ spezifischen Eigenschaft vornbeikommt.

          Eine Grafik läßt sich sehr gut und schon seit frühsten Browserzeiten, ansprechen und die Eigenchaften ändern. Das was du machst ist, wie Martin schon sagte, Hampelei.

          danke für den link. ok, wenn ich mir mit dem src tag den namen der grafik direkt raushole, spare ich mir 2 zeilen string operationen. aber ganz ehrlich. unter der restriktion, dass die position der zu ersetzenden grafik zufällig ausgewählt werden soll und keine grafik 2 mal angezeigt werden darf, finde ich meinen algorithmus schon ganz effektiv. ob ich dabei technisch innerhtml nehme oder die grafiken direkt ansteuere, macht unter meinen laienhaften augen keinen grossen unterschied, der grossteil des codes ist ja für die restriktionen und nicht für den einfachen austausch.

          Ein Grund für dein Fehler könnte sein, dass du überall globale Variabeln verwendest, der IE ist da manchmal emfindlicher. Ich krieg übrigens Fehlermeldungen in meinem Firefox, die aber nichts mit dm Problem zu tun haben.

          ja, die fehlermeldungen krieg ich auch. allerdings nur manchmal. und ich hab keinen blassen schimmer, warum sie gelegenetlich auftreten und warum nicht. komisch ist wie gesagt, dass die skripte trotzdem funktionieren...

          viele grüße,
          mario.

          1. Hi,

            der quelltext sieht ja ganz anders aus, da mit include noch diverse andere dateien reingeladen werden und auch das array selber dynamisch aus der datenbank kommt.

            deswegen sollst du ja auch nicht die Quelltextdateien untersuchen, die auf dem Server liegen, sondern den Quelltext, der beim Browser ankommt.

            gibt es keinen weg, im ie den fehler genauer anzusehen, so wie die js konsole im ff?

            Natürlich: Ansicht/Quelltext, dann im Editor zur angegebenen Zeile scrollen.

            ja, die fehlermeldungen krieg ich auch. allerdings nur manchmal. und ich hab keinen blassen schimmer, warum sie gelegenetlich auftreten und warum nicht.

            Ein Grund mehr, den Quellcode anzusehen, den auch der Browser sieht. Serverseitiger Quelltext verwirrt bei clientseitigen Problemen mehr als er hilft, wenn er dynamisch erzeugt oder aufbereitet wird.

            So long,
             Martin

            --
            Ungeschehene Ereignisse können einen katastrophalen Mangel an Folgen nach sich ziehen.
              (Unbekannter Politiker)
          2. Die Zeilenangabe entspricht der Zeile wo der Fehler ist +1

            jo, das bringt mich eben gerade nicht weiter. der quelltext sieht ja ganz anders aus, da mit include noch diverse andere dateien reingeladen werden und auch das array selber dynamisch aus der datenbank kommt. daher auch noch die php reste im quelltext. gibt es keinen weg, im ie den fehler genauer anzusehen, so wie die js konsole im ff?

            Der Fehler ist in einer von diesen Dateien in genau der Zeile (+1) die dir gemeldet wird und wenn es "php reste" gibt stimmt was mit deinem server nicht.

            Auweia. Das würde ich ganz anders lösen: Ich würde mir mit getElementsByTagName('img')[referenzzuersetzen] eine Referenz (hier im technischen Sinn!) auf das img-Element holen und dann einfach dessen src- und alt-Eigenschaft neu setzen. Keine Hampelei mit innerHTML.

            naja, ich dachte ich nutze das DOM. ich will zufällig die position bestimmen, die ersetzt werden soll. dann will ich die grafik austauchen und das alt und das title tag. und statt mühselig 3mal zu tauschen nehm ich einfach den inhalt des elternelements, das ist die ganze grafik. fertig.

            Naja, du nutzt nicht DOM, sondern innerHTML was ziemlich das gegenteil davon ist. Das funktioniert, weil kein Browserhersteler an diesem M$ spezifischen Eigenschaft vornbeikommt.

            Eine Grafik läßt sich sehr gut und schon seit frühsten Browserzeiten, ansprechen und die Eigenchaften ändern. Das was du machst ist, wie Martin schon sagte, Hampelei.

            danke für den link. ok, wenn ich mir mit dem src tag den namen der grafik direkt raushole, spare ich mir 2 zeilen string operationen. aber ganz ehrlich. unter der restriktion, dass die position der zu ersetzenden grafik zufällig ausgewählt werden soll und keine grafik 2 mal angezeigt werden darf, finde ich meinen algorithmus schon ganz effektiv. ob ich dabei technisch innerhtml nehme oder die grafiken direkt ansteuere, macht unter meinen laienhaften augen keinen grossen unterschied, der grossteil des codes ist ja für die restriktionen und nicht für den einfachen austausch.

            Naja wenn du meinst. Für mich sieht der sehr uneffektiv aus (innerHTML ist uneffektiv, der Browser muss jedesmal deinen HTML Code neu interpretieren, obwohl ein passendes Objekt existiert). Aber auch dein Austauschprozedere ist sehr umständlich, da der HTML Code für alle Bilder fast gleich ist.

            Ein Grund für dein Fehler könnte sein, dass du überall globale Variabeln verwendest, der IE ist da manchmal emfindlicher. Ich krieg übrigens Fehlermeldungen in meinem Firefox, die aber nichts mit dm Problem zu tun haben.

            ja, die fehlermeldungen krieg ich auch. allerdings nur manchmal. und ich hab keinen blassen schimmer, warum sie gelegenetlich auftreten und warum nicht. komisch ist wie gesagt, dass die skripte trotzdem funktionieren...

            Wenn ich das richtig sehe hast du's in den Griff bekommen.

            Struppi.

            --
            Javascript ist toll (Perl auch!)
            1. Naja wenn du meinst. Für mich sieht der sehr uneffektiv aus (innerHTML ist uneffektiv, der Browser muss jedesmal deinen HTML Code neu interpretieren, obwohl ein passendes Objekt existiert). Aber auch dein Austauschprozedere ist sehr umständlich, da der HTML Code für alle Bilder fast gleich ist.

              ok, das ist ein argument und ich lasse mich auch gern überzeugen. ich habe mittlerweile auch den fehler gefunden. die ursache liegt darin, dass unterschiedliche browser die inhalte vom <img> tag in unterschiedlicher reihenfolge anzeigen, also bei einem kommt erst das scr, dann alt, dann title, beim anderen browser anders. damit klappt natürlich das extrahieren nicht mehr so ganz. (by the way, warum nimmt der browser das nicht einfach in der reihenfolge, wie ich es schreibe?).

              damit bin ich dann wirklich auf eure lösung angewiesen und bitte nochmal um hilfe, wie ich die src angabe aus folgendem konstrukt rausbekomme:

              <div id="referenz2" style="position: absolute; top: 0px; left: 264px;"><img src="./referenzen/1166180146Referenz-Kunden_einzeln_41.jpg" width="130" height="65" alt="Allgaier Gruppe" title="Allgaier Gruppe" /></div>

              mit document.images vermute ich, aber ich weiss nicht, wie ich die grafik rausbekommen soll, da ich ja gerade deren namen suche. man erinnere sich: ich suche mir per zufall einen <div> bereich, hier wäre es der mit der id="referenz2" und dann tausche ich bisher das ganze innere aus, in zukunft nur src, alt und title.

              du schreibst auch, weil der html code immer derselbe ist. gibt es da nen anderen weg? ich lerne gern was neues, aber ich weiss bis jetzt nicht, wie man das einfacher gestalten kann.

              Wenn ich das richtig sehe hast du's in den Griff bekommen.

              nö, hab ich nicht. hab bis jetzt nicht viel verändert. aber ich hab was rausgefunden. die fehlerangabe im ie kommt garnicht von dem skript, das hier zur disposition steht sondern vom drumherum. genauso wie im ff. das komische: mal kommt es, mal nicht. und ich hab keine ahnung, warum. wie gesagt, mal arbeiten tut alles aber bei ca. 1/3 aller aufrufe kommt die fehlermeldung.

              by the way: wenn das mit dem ie und dem quelltext anzeigen so einfach wäre. klicke ich auf das kontextmenü tut sich rein garnichts. und das mausrad kann ich auf dieser seite auch nicht verwenden, weiss der geier warum...

              viele grüße,
              mario

              1. ok, das ist ein argument und ich lasse mich auch gern überzeugen. ich habe mittlerweile auch den fehler gefunden. die ursache liegt darin, dass unterschiedliche browser die inhalte vom <img> tag in unterschiedlicher reihenfolge anzeigen, also bei einem kommt erst das scr, dann alt, dann title, beim anderen browser anders. damit klappt natürlich das extrahieren nicht mehr so ganz. (by the way, warum nimmt der browser das nicht einfach in der reihenfolge, wie ich es schreibe?).

                Weil wenn du innerHTML änderst nicht einen String änderst, wie du vielleicht meinst, sondern das ist eine spezielle Funktion, mit der du nachträglich HTML Code in den Dokumentenbaum einpflanzen kannst. Natürlich muss dann der Browser, diesen Code interpretieren und für seine Zwecke so umbauen, dass er in der Lage ist diesen darzustellen.
                Dass dann der Code nicht immer 1:1 umgesetzt wird, ist klar, wegen der Fehlertoleranz gegenüber HTML Code. Wie z.b. diese Frage zeigt.

                damit bin ich dann wirklich auf eure lösung angewiesen und bitte nochmal um hilfe, wie ich die src angabe aus folgendem konstrukt rausbekomme:

                <div id="referenz2" style="position: absolute; top: 0px; left: 264px;"><img src="./referenzen/1166180146Referenz-Kunden_einzeln_41.jpg" width="130" height="65" alt="Allgaier Gruppe" title="Allgaier Gruppe" /></div>

                Ich hab mir deinen code mal genauer angeschaut, er ist eine Katastrofe aus der Sicht semantisch korrekten HTML Code. Ein DIV Element reiht sich an das andere, Klassen und ID wurden ausgeschüttet mit vollen Händen. Einmal enthält der code dadurch für Suchmaschinen so gut wie keine Informationen (du kannst im Firefox CSS auschalten, dann siehst du, was in etwa eine Suchmaschine sieht, ein paar Links und eine Menge Bilder, aber kein Text, der in irgendeiner Art und weise ausgezeichnet wurde und dadurch eine Bedeutung bekommt. DIV und SPAN sind "bedeutungslose" Tags, die bestimmte Aufgaben erfüllen, aber man sollte sich immer bemühen diese zu vermeiden und ein entsprechendes HTML Element auswählen.

                Die meisten Klassen, die du verwendest sind überflüssiger Ballast. Du kannst im CSS auf HTML Element verweisen. D.h. wenn du einen Bereich mit einer ID hast, dann schreibst du im CSS: #ID ELEMENT das läßt sich dann auch noch verschachteln: #ID ELEMENT1 ELEMENT2, damit sprichst du das ELEMENT2 an das innerhalb eine ELEMENT1 in dem Element mit der id ID angeordnet ist.

                z.b.:

                <div class="adressbereich">  
                <div class="telefon">  
                Fon:&nbsp;&nbsp;07308·9655·0<br>  
                Fax:&nbsp;&nbsp;07308·9655·44</div>  
                  
                <div>  
                <a href="mailto:info@datadruck.com" onclick="this.blur();" onmouseover="statuszeilentext(''); return true;">info@datadruck.com</a><br>  
                ftp://mail.datadruck.com</div>  
                </div>  
                
                

                schon allein der Klassenamen sollte zeigen welches Element zu hier eigentlich verwenden willst: http://de.selfhtml.org/html/text/zitate_adressen.htm#adressen
                und falls du innerhalb dieses Blocks, wirklich die Telefonnummer anders formatiert haben willst, reicht ein SPAN Element, z.b. so:

                <address>  
                <span>  
                Fon:&nbsp;&nbsp;07308·9655·0<br>  
                Fax:&nbsp;&nbsp;07308·9655·44  
                </span>  
                  
                <a href="mailto:info@datadruck.com">info@datadruck.com</a>  
                <br>  
                ftp://mail.datadruck.com  
                </address>  
                
                

                Mit CSS kannst du die Elemente dann so ansprechen:

                address  
                {  
                   border:1px solid black;  
                }  
                address span  
                {  
                   display:block;  
                   color:red;  
                }  
                
                

                Was ich damit sagen will, dass dein Konstrukt schon umständlich ist und dir die Lösung erschwert.

                Warum nicht so:
                <img id="referenz2" style="position: absolute; top: 0px; left: 264px;" src="..." .... />

                (und im zweifelsfall noch ein display:block dazu.

                mit document.images vermute ich, aber ich weiss nicht, wie ich die grafik rausbekommen soll, da ich ja gerade deren namen suche. man erinnere sich: ich suche mir per zufall einen <div> bereich, hier wäre es der mit der id="referenz2" und dann tausche ich bisher das ganze innere aus, in zukunft nur src, alt und title.

                ich würd das ganze Ding anders machen. Ich versuch den Code mal umzusetzen.

                Struppi.

                --
                Javascript ist toll (Perl auch!)
                1. wow. danke erstmal für die ausführliche antwort, ich dachte immer, dass ich mit meinen divs ganz gut unterwegs bin, zumal der validator nicht meckert aber scheinbar bin ich doch nicht so effizient... deine anmerkungen sind echt hilfreich, ich weiss jetzt, worauf ich das nächste mal schauen muss und hoff, ich krieg das dann besser hin... ist echt nicht selbstverständlich, dass man so konstruktive kritik bekommt und ich bin gerade etwas verlegen, was ich ausser einem ehrlich gemeinten danke noch sagen könnte!
                  und bei deinem js fehlen mir echt die worte. habs mir gerade ausgedruckt um das nachzuvollziehen... grundsätzlich verstehe ich deine routine aber da selber draufzukommen... da sind wohl noch welten zwischen uns. ;-) find ich aber klasse, dass du dir die mühe gemacht hast, so lernt man echt was! ist was anderes, als wenn man immer die beispiele in irgendwelchen büchern liest, die man eh nicht brauchen kann... wie gesagt: echt danke!

                  viele grüße,
                  mario

              2. du schreibst auch, weil der html code immer derselbe ist. gibt es da nen anderen weg? ich lerne gern was neues, aber ich weiss bis jetzt nicht, wie man das einfacher gestalten kann.

                So, meine Lösung würde so aussehen:
                http://javascript.jstruebig.de/test/datatdruck.html

                Struppi.

                --
                Javascript ist toll (Perl auch!)
            2. ich hab nochwas rausgefunden. das skript funktioniert nicht nur wegen unterschiedlicher reihenfolge im <img> tag nicht, sondern auch, weil manchmal der absolute pfad mit domainnamen im src tag steht, manchmal auch nur der relative. demzufolge ist erst recht fraglich, ob man da über das src tag die grafik identifizieren kann, was ich ja unbedingt muss, damit nichts doppelt vorkommt.

              aso. und mein internet explorer weigert sich verdammt hartnäckig, mir den quelltext der seite anzuzeigen, was die fehlersuche enorm erschwert. weiss vielleicht jemand, warum das dieser blöde browser macht? (ich verwende version 7).

              1. Hi!

                aso. und mein internet explorer weigert sich verdammt hartnäckig, mir den quelltext der seite anzuzeigen, was die fehlersuche enorm erschwert. weiss vielleicht jemand, warum das dieser blöde browser macht? (ich verwende version 7).

                Eventuell ist kein Editor zum Anzeigen des Quelltextes eingestellt? Mein IE hier zeigt den Quelltext an. Was mir dabei aufgefallen ist: Du verwendest zum Teil Variablen, die du weder global noch lokal als solche deklariert hast. Ob und wie das mit deinem Problem zusammenhängt weiß ich nicht, allerdings wäre das eventuell ein Ansatz.

                mfG

                --
                sh:( fo:§ ch:{ rl:? br:> n4:# ie:} mo:? va:) de:µ zu:| fl:( ss:{ ls:~ js:)
                "And all those exclamation marks, you notice? Five? A sure sign of someone who wears his underpants on his head."
                (Terry Pratchett)
                1. ... Was mir dabei aufgefallen ist: Du verwendest zum Teil Variablen, die du weder global noch lokal als solche deklariert hast. Ob und wie das mit deinem Problem zusammenhängt weiß ich nicht, allerdings wäre das eventuell ein Ansatz.

                  Das hab ich ihm auch schon gesagt https://forum.selfhtml.org/?t=143135&m=929783 (im letztem Absatz)

                  Nicht deklarierte Variabeln sind in JS übrigens immer global bzw. im window Objekt

                  Struppi.

                  --
                  Javascript ist toll (Perl auch!)
                  1. Hi!

                    Nicht deklarierte Variabeln sind in JS übrigens immer global bzw. im window Objekt

                    Ah, deswegen war mir wohl auch nicht aufgefallen, dass wir das Gleiche meinen. Und wieder was gelernt :-)

                    mfG

                    --
                    sh:( fo:§ ch:{ rl:? br:> n4:# ie:} mo:? va:) de:µ zu:| fl:( ss:{ ls:~ js:)
                    "And all those exclamation marks, you notice? Five? A sure sign of someone who wears his underpants on his head."
                    (Terry Pratchett)
                2. hey.

                  nee, es ist ein editor eingestellt. wie gesagt, es geht komischerweise nur auf dieser seite nicht, bei allen anderen webseiten kann man den quelltext ansehen. ebenso geht das mausrad nicht. ich vermute ja, dass ich irgendwas im code habe, was stört, aber ich weiss nicht genau, was es ist, vielleicht kann das phänomen jemand im ie auch nachvollziehen, im firefox geht wie gesagt alles problemlos.

                  viele grüße,
                  mario

      2. Hi,

        function referenzzufallszahlengenerator(min, max)
        {
                 var zahl = min - 1;
                 while (zahl < min)
                       {
                       zahl = Math.floor(Math.random()*(max+1));
                       }
                 return zahl;
                 }
        zufallszahl im intervall. abgeschrieben aus nem js buch.

        Ich zitiere mich mal selbst: http://community.de.selfhtml.org/my/zitatesammlung/zitat91

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        O o ostern ...
        Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. gibts dieses zitat auch, ohne dass man sich anmelden muss? wie gesaht, die zufallsfunktion hab ich nur aus nem buch abgeschrieben, dachte, die frau hat ahnung...

          1. Hi,

            gibts dieses zitat auch, ohne dass man sich anmelden muss?

            Ups: http://community.de.selfhtml.org/zitatesammlung/zitat91

            wie gesaht, die zufallsfunktion hab ich nur aus nem buch abgeschrieben, dachte, die frau hat ahnung...

            Das Beispiel beweist das Gegenteil ...

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            Schreinerei Waechter
            O o ostern ...
            Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.