2009-04-19 3 views
0

Ich verwende eine tutorial from Imar Spaanjaars' web site, um eine ganze Tabellenzeile klickbar und haben einen Hover-Effekt auch darauf. Sobald der Benutzer über die Tabellenzeile fährt, entfernt er die vordefinierte Hintergrundfarbe für diese Zeile. Ich möchte es so machen, dass es diesen Stil nicht überschreibt. Wie könnte ich das tun?Javascript Hover-Effekt entfernt vordefinierten Stil

<script type="text/javascript"> 
    function ChangeColor(tableRow, highLight) 
    { 
    if (highLight) 
    { 
     tableRow.style.backgroundColor = '#dcfac9'; 
    } 
    else 
    { 
     tableRow.style.backgroundColor = 'white'; 
    } 
    } 

    function DoNav(theUrl) 
    { 
    document.location.href = theUrl; 
    } 
    </script> 

Wenn Sie irgendwelche besseren Vorschläge haben, um diese Aufgabe zu erfüllen, würde ich lieben, sie zu hören!

Mein TR-Tag hat ein bgcolor -Tag, das von meinem PHP gesetzt wird, wenn dieses bestimmte Poststück gelesen wurde oder nicht.

Antwort

5

Wenn die ursprüngliche Hintergrundfarbe über ein Stylesheet oder (wie in Ihrem Fall) ein Legacy-Attribut bgcolor angegeben wird, können Sie einfach den Style für das Element löschen, wenn Sie fertig sind, und es wird zurückgesetzt:

function ChangeColor(tableRow, highLight) 
{ 
    if (highLight) 
    { 
    tableRow.style.backgroundColor = '#dcfac9'; 
    } 
    else 
    { 
    tableRow.style.backgroundColor = ''; 
    } 
} 

das heißt, würden Sie wahrscheinlich eine CSS-Klasse und die damit verbundenen Regeln besser dran mit dem markierten Zustand der Zeile darstellen und hinzufügen/entfernen, dass, wie Sie möchten:

tr { backgroundColor: <whatever> } 
tr.highlighted { backgroundColor: #dcfac9 } 

Dann wird Ihr Javascript wird

function ChangeColor(tableRow, highLight) { 
    if(highLight) 
    { 
     tableRow.className = 'highlighted'; 
    } 
    else 
    { 
     tableRow.className = ''; 
    } 
} 

Zusätzlich zu halten bestimmte Stile aus Ihrem Skript und Markup (wo sie schwierig wird, im Laufe der Zeit zu halten), auf diese Weise können Sie schweben Stile hinzufügen oder ändern (zum Beispiel fett gedruckten Text oder eine Grenze) ohne Hinzufügen von Komplexität zum Code.

Wenn Sie Zugriff auf eine Javascript-Bibliothek haben wie Prototype, Ext.js oder Dojo, dann können Sie ihre Klasse Bearbeitungsfunktionen verwenden, anstatt, die den Fall behandeln, wo Sie eine vorhandene Klassenname beibehalten möchten, oder verwenden, um mehrere Klassen für auf einem einzelnen Element.

+0

@Rick: Ich mochte eigentlich * deiner * besser - in meiner Erfahrung, putting rohe Stilwerte im Code ist nur für spätere Kopfschmerzen fragen; Ihr Stylesheet-Vorschlag ist viel vorzuziehen. Ich habe die beiden als Referenz zusammengefasst, bearbeiten Sie, wie Sie es für richtig halten. – Shog9

+0

Das erste Beispiel hat funktioniert. Ich könnte schwören, dass ich das schon einmal versucht habe, aber ich denke nicht. Rick, Danke für deine Hilfe! Und danke Shog9! –

+0

@ Shog9: Ich denke, ich mochte deine besser b/c es beantwortet die Frage mehr direkt. Ich bevorzuge jedoch die Verwendung von Klassen für handcodierte Stile. –

Verwandte Themen