+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Hintergrundfarbe eines DIVs bei onclick ändern

  1. #1
    dp82 ist offline Grünschnabel dp82 befindet sich auf einem aufstrebenden Ast
    registriert
    15-07-2008
    Beiträge
    2

    Hintergrundfarbe eines DIVs bei onclick ändern

    Hallo,

    das hört sich zunächst recht einfach an, ist dann aber etwas schwieriger:

    Also, ich habe ein Menü, bestehend aus transp. Bildern. Die sind einerseits mit onmouseovern belegt, zusätzlich möchte ich aber, dass der jeweils aktive Menüpunkt schwarz hinterlegt ist (also onClick). Wenn ich dann einen anderen Menüpunkt anklicke, soll sich der wiederum schwarz einfärben, der vorher aktive jedoch wieder einen transparenten Hintergrund haben.

    Das Problem ist: das soll alles in einem einzigen HTML-File passieren, also quasi dynamisch per JS übergeben werden...

    Hier der Basisquellcode des Menüs:

    Code:
    <a onmouseout="MM_swapImgRestore(),change_pf2('transparent');" onmouseover="MM_swapImage('pf2','','menue/neg/menue_07.png',1),change_pf2('black');" class="pf_menue">
    <img src="menue/menue_07.png" name="pf2" width="210" border="0" id="pf2"></a><br />
    
    <a onmouseout="MM_swapImgRestore(),change_pf3('transparent');" onmouseover="MM_swapImage('pf3','','menue/neg/menue_08.png',1),change_pf3('black');">
    <img src="menue/menue_08.png" name="pf3" width="210" border="0" id="pf3" /></a><br />
    
    <a onmouseout="MM_swapImgRestore(),change_pf4('transparent');" onmouseover="MM_swapImage('pf4','','menue/neg/menue_09.png',1),change_pf4('black');">
    <img src="menue/menue_09.png" name="pf4" width="210" border="0" id="pf4" /></a><br />
    Und hier eines der bisher existierenden JS für das MouseOver jedes einzelnen Menüpunkts:

    Code:
    function change_pf2(hgrund){
    for (var i = 0; document.getElementsByName('pf2').length; i++)
    {document.getElementsByName('pf2')[i].style.backgroundColor = hgrund;
    }
    }
    Wie verbinde ich also das bisherige JS mit einem neuen Script was den jeweils zuletzt geklickten Menüpunkt schwarz hinterlegt?

    danke für jede Hilfe! lg -daniel-

  2.    Empfehlenswerte Literatur von unserem Partner Terrashop

    Das AJAX Kompendium jetzt 84% Rabatt
    Ajax - der Technologiemix aus JavaScript und XML - ist eines der Kernstücke professioneller Web 2.0-Programmierung. Dieses Buch führt Sie auf über 800 Seiten(!) von den ersten JavaScript-Codezeilen bis zur Entwicklung mit Ajax-Frameworks.

    Preis: früher: 49,95€ - jetzt nur: 7,95€

    Hier geht es direkt zum Buch

    Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar!

  3. #2
    [-UFO-]Melkor ist offline Doppel-As [-UFO-]Melkor befindet sich auf einem aufstrebenden Ast
    registriert
    16-08-2006
    Beiträge
    141

    AW: Hintergrundfarbe eines DIVs bei onclick ändern

    Meinst du sowas?

    Code:
    var pf = '';
    function change_pf(newpf){
       if(
          pf.length > 0
       ){
          for (var i = 0; document.getElementsByName(pf).length; i++){
             document.getElementsByName(pf)[i].style.backgroundColor = 'transparent';
          }
       }
       for(var i = 0; document.getElementsByName(newpf).length; i++){
          document.getElementsByName(newpf)[i].style.backgroundColor = 'black';
       }
       pf = newpf;
    }
    Also diese Funktion setzt jedenfalls bei den Elementen mit dem übergebenen Namen die Hintergrundfarbe auf 'black' und bei denen, die vorher mit der Funktion 'black' "gemacht" wurden, wieder auf transparent.

  4. #3
    dp82 ist offline Grünschnabel dp82 befindet sich auf einem aufstrebenden Ast
    registriert
    15-07-2008
    Beiträge
    2

    AW: Hintergrundfarbe eines DIVs bei onclick ändern

    ja, ich glaube, sowas müsste funktionieren... aber kann es sein, dass du in der ersten Zeile einen Fehler hast? --> var pf = '';

    zusätzlich zum Ändern der Hintergrundfarbe müsste aber auch ein neues Bild geladen werden (/neg/menue_xx.png). was dann wieder »zurückgetauscht« wird, wenn ein anderer Menüpunkt angeklickt wird. Kann ich diese beiden Aktionen in einem JS zusammenfassen?

    Danke auf jeden Fall schon mal! -daniel-

  5. #4
    Avatar von ein schlauer
    ein schlauer ist offline Lounge-Member ein schlauer befindet sich auf einem aufstrebenden Ast
    registriert
    18-08-2004
    Ort
    Mainz
    Beiträge
    10.944

    AW: Hintergrundfarbe eines DIVs bei onclick ändern

    Das ist ziemlicher Unsinn. Du kannst die mouseevent auch auf das img-Element legen und du kannst beim Funktionsaufruf das Element übergeben.

    PHP-Code:
    <img src="menue/menue_09.png" onmouseover="change(this, 'black')"
    onmouseout="change(this, '')" /> 
    PHP-Code:
    function change(elclr) {
    if(
    el && el.styleel.style.backgroundColor clr;

    Den Rahmen kannst mit CSS für alle Bilder in einem Link entfernen:
    PHP-Code:
    a img bordernone; } 
    Für dein Klick Problem musst du dir den aktuellen klick merken:

    PHP-Code:
    <img src="menue/menue_09.png" onmouseover="change(this, 'black')"
    onmouseout="change(this, '') onclick="doClick(this)" /> 
    PHP-Code:
    var click null;
    function 
    change(elclr) {
    if(
    click != el && el && el.styleel.style.backgroundColor clr;
    }
    function 
    doClick(el) {
    click el;

    (so in etwa, ungtestet)

+ Antworten

Ähnliche Themen

  1. onclick für eine ganze Tabellenzeile. außer ein Element
    Von Nussmischung im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 20-12-2006, 16:18
  2. Antworten: 2
    Letzter Beitrag: 05-09-2006, 08:34
  3. Funktion erst bei onClick notieren
    Von Stefan2531 im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 03-09-2006, 18:45
  4. Andere div's als das gewählte verstecken?
    Von badbandit im Forum JavaScript
    Antworten: 15
    Letzter Beitrag: 02-05-2006, 13:55
  5. divs nebeneinander alle 100% Höhe
    Von bine im Forum CSS und (X)HTML
    Antworten: 15
    Letzter Beitrag: 30-08-2004, 16:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein