Bernd: in einem Layer soll bei MouseOver ein neuer Text erscheinen

Hallo,
auf der Seite: http://www.carisma-photographers.com/test/photographers.htm sind meherer Namen. Geht es das Script so umzuschreiben das bei einem mouseover anstatt dem Personennamen (z.B. "Dieter Huber") der Ort (z.B. "Salzburg") erscheint?
Die Namen sind alle in einem <div>
Ich habe schon ein bißchen probiert, aber es ist mir nicht gelungen.

Guten Rutsch und viel Glück im neuen Jahr,
Bernd

  1. Hallo Bernd,
    habs nicht ausprobiert, aber so könnts gehen:

    var namenspeicher;

    var person_art=[ ['Amsterdam',7,8,9,10,11],['New York',12,7,9,6,0],['Oslo',7,9,8],['Munich',6,7,9,1],['Bad Neustadt',11,7,8,2,9],['Stadt',5,6,9,7,10],['Stadt',8,9,3],['Stadt',7,2,4,9,10],['Stadt',5,9,1,10,7],['Stadt',10,7,2,3,1],['Stadt',7,2,1]];

    function clearAll() {

    if(arguments.length>0){arguments[0].childNodes[0].childNodes[0].nodeValue=namenspeicher;}

    for (x=0;x<=12;x++) { document.getElementById("art_"+x).style.color = "#666666";        }
      for (x=0;x<=10;x++) { document.getElementById("per_"+x).style.color = "#666666";        }
    }

    function changePerson(id) {
      for (x=0;x<=12;x++) { document.getElementById("art_"+x).style.color = "#666666";        }
      for (x=1;x<= person_art[id].length;x++) { document.getElementById("art_"+person_art[id][x]).style.color = "#007DC9"; }

    document.getElementById("per_"+[id]).childNodes[0].nodeValue=person_art[id][0];

    document.getElementById("per_"+[id]).style.color = "#007DC9";
    }

    <a href="photographers/huber.htm" onMouseOver="changePerson(0)" onMouseOut="clearAll(this)">
                <div class="photographers" id="per_0">Dieter Huber</div></a>

    gruß
    ptr

    1. uuups,
      namenspeicher muß natürlich belegt werden:

      function changePerson(id) {
        for (x=0;x<=12;x++) { document.getElementById("art_"+x).style.color = "#666666";        }
        for (x=1;x<= person_art[id].length;x++) { document.getElementById("art_"+person_art[id][x]).style.color = "#007DC9"; }

      namenspeicher=document.getElementById("per_"+[id]).childNodes[0].nodeValue;

      document.getElementById("per_"+[id]).childNodes[0].nodeValue=person_art[id][0];

      document.getElementById("per_"+[id]).style.color = "#007DC9";
      }

      gruß
      ptr

      1. ... ob allerdings die Modem-Benutzer glücklich sind, wenn gleich beim ersten Aufruf der Seite 100.000 MB Bilder vorgeladen werden, ohne daß man was sieht...????
        gruß
        ptr

        1. Vielen Dank für Deine Hilfe. Ich habe es so versucht, aber leider hat es nicht funktioniert.
          Du findest die neue Seite unter http://www.carisma-photographers.com/test/photographers_test4.htm

          Das mit dem Preloaden habe ich rausgemacht. War echt ein bißchen heavy. Da muss ich mir was eleganteres einfallen lassen.

          ... ob allerdings die Modem-Benutzer glücklich sind, wenn gleich beim ersten Aufruf der Seite 100.000 MB Bilder vorgeladen werden, ohne daß man was sieht...????
          gruß
          ptr

          1. nach der changePerson()-Funktion fehlt das abschließende "}".
            die zweite for-Schleife in dieser Funktion muß mit x=1 beginnen:
              for (x=1;x< person_art[id].length;x++) .....

            gruß
            ptr

            1. Hi Bernd,

              habs mal ausprobiert, das funktioniert dann.

              Aber bei den Kategorien darfst du natürlich nicht "this" in der clearAll()-Funktion übergeben, sonst wird da auch der letzte Name reingelegt bei mouseout.

              Als nächstes Problem taucht dann folgendes auf :

              z.B.:
              "Thorsten Klapsch" ist viel kürzer als "Berlin".
              Fahre ich mit der Maus ganz rechts über Klapsch, wechselt's zu Berlin.
              Das ist kürzer, ich bin nicht mehr darüber mit der Maus und das mouseout-Ereignis tritt ein.
              Dadurch erscheint wieder "Thorsten Klapsch", das ist länger, die Maus ist wieder drüber, "Berlin" erscheint, ich bin nicht mehr drüber, "Thorsten Klapsch" erscheint, das ist länger, .....
              und immer so weiter. Es flackert.

              Kannste verhindern, wennde deinen Personen-DIVs z.B. style="width:130px" zuweist.

              frohes neues!
              ptr

              1. Hi Bernd,

                habs mal auf NS 7.0 ausprobiert, da funktionierts nicht.
                Liegt daran, daß der NS beim clearAll(this) im <a> mit "this" nicht eine Referenz auf das Objekt zurückgibt, sondern die Link-Adresse.

                Mach jetzt aber Feierabend, ich schau morgen nochmal hier vorbei.

                ptr

                  1. Super!!! Vielen Dank. Hoffentlich kannst Du das Script auch mal irgendwann für Dich selbst benutzen.

                    Guten Rutsch und viel Glück im neuen Jahr.

                    Hi Bernd,
                    so gehts:

                    http://www.nesplan.de/gast/test/carisma.html

                    ptr

    2. uuups,
      und die zweite for-Schleife muß dann zwar bei 1 anfangen, darf aber trotzdem nur bis x<person_art[id].length laufen (nicht <=):

      function changePerson(id) {
        for (x=0;x<=12;x++) { document.getElementById("art_"+x).style.color = "#666666";        }
        for (x=1;x< person_art[id].length;x++) { document.getElementById("art_"+person_art[id][x]).style.color = "#007DC9"; }

      namenspeicher=document.getElementById("per_"+[id]).childNodes[0].nodeValue;

      document.getElementById("per_"+[id]).childNodes[0].nodeValue=person_art[id][0];

      document.getElementById("per_"+[id]).style.color = "#007DC9";
      }

      war denkfehler.

      sorry
      ptr

      1. Ok, ich werde es mal ausprobieren.
        Danke.

  2. Hallo

    mache doch einfach zwei div's, einen für den Namen, den anderen für die Strasse

    und bei MouseOver setzt du den einen auf hidden, den anderen auf visibility