2009-04-03 3 views
5

Ich verwende das DOM, um eine JSON-Antwort von einer AJAX-Funktion zu verwalten, die ich ausführe. Das Skript, das ich schreibe, muss vollständig portierbar sein, daher definiere ich die Stile für die erstellten Elemente im Handumdrehen (das heißt, keine Verknüpfung mit einem externen CSS und keine Bereitstellung von CSS im HTML-Dokument selbst, weil ich es nicht tun werde) habe die Kontrolle über das Dokument).Wie kann ich ein CSS ": Hover" auf ein DOM-Element in JavaScript setzen?

Ich möchte einen Hover-Effekt auf einige der Elemente erstellen.

Beispiel:

 #myDiv:hover { background:#000000; }

Gibt es eine Möglichkeit, dass im DOM zu definieren? Oder muss ich mouseover verwenden?

Antwort

11

Sie können Stylesheets dynamisch erstellen und bearbeiten. See here für einige der Cross-Browser-Probleme mit diesem Ansatz.

Ich habe eine Wrapper-Funktion lying around, die um einige von ihnen funktioniert; Mit ihr würde der Code

document.createStyleSheet().addRule('#myDiv:hover', 'background:#000000;'); 
+0

Für mich Inline-CSS ist nicht gut genug. Ich meine eine gute Antwort, also werde ich nicht ablehnen, aber es sollte auf andere Weise möglich sein. –

+0

2017 Update: createStyleSheet() war nur IE, aber von IE11 veraltet https://technet.microsoft.com/en-us/ms531194(v=vs.71) – BigJ

3

lesen Sie Element mit vordefinierten Klasse erstellen kann:

.h:hover{color: #c00} 

var elem = document.createElement('div'); 
elem.className = 'h' 
+0

gut, und ja ... aber ich tat es nicht die Möglichkeit haben, zu einem Stylesheet zu verlinken – johnnietheblack