in einem Layer soll bei MouseOver ein neuer Text erscheinen
Bernd
- javascript
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
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
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
... 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
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
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
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
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
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
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
Ok, ich werde es mal ausprobieren.
Danke.
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