farbwechsel von schrift bei aktion
jmor
- css
Ich habe hier ein Problem, dass ich bei einer Aktion in einem Fenster, in meiner Menü-leiste links einen Text einfärben möchte. Bei einer weiteren Aktion soll er wieder die Ursprüngliche Farbe herstellen und anderes Element färben.
Da das Menü per JSP generiert wird, hatte ich es mit document.getElementById("t"+input).color = "#FFDD00"; in einer Javascript funktion realisiert und unten dann mit <font id=t1> (t1 bis n dynamisch generiert) realisiert.
Hat toll funktioniert. Nun will ich es aber mit Stylesheets machen und hier hab ich ein Problem.
function markPart(input){
try {
//document.getElementById("t"+input).color = "#FFDD00";
document.getElementById("t"+input).id = "SelectedPart";
if (Teil == 0) Teil=input;
else if (Teil!=input) {
//document.getElementById("t"+Teil).color = "#FFFFFF";
document.getElementById("t"+Teil).id = "NotSelectet";
Teil=input;
}
} catch (e) {
//document.getElementById("t"+Teil).color = "#FFFFFF";
document.getElementById("t"+Teil).id = "NotSelectet";
} }
in .css file steht:
#SelectedPart { color: #FFDD00; }
#NotSelectet { color: #FFFFFF; }
in menü steht nun:
<span id="t1">text</span>
nun Funktioniert noch das einfärben, aber das zurückfärben gibt mir Fehlermeldung aus.
'null' ist Null oder kein Objekt, und zwar in der Zeile nach dem catch. Mir ist nicht klar wieso zurückfärben nicht funktioniert.
Wäre über anregungen dankbar:)
Hi,
Da das Menü per JSP generiert wird, hatte ich es mit document.getElementById("t"+input).color = "#FFDD00"; in einer Javascript funktion realisiert
das musst Du mir erklären. _Weil_ Du eine serverseitige Technik bereits einsetzt, machst Du Dich von einer clientseitigen Technik abhängig? Für mich macht das wenig Sinn.
und unten dann mit <font id=t1> (t1 bis n dynamisch generiert) realisiert.
Warum nimmst Du als deprecated markierte HTML-Elemente?
Hat toll funktioniert.
Dann hast Du es nicht ausreichend getestet:
//document.getElementById("t"+input).color = "#FFDD00";
Eine DOM-Node hat keine color-Eigenschaft. Eine entsprechende Zuweisung verläuft im Sande. Wenn sich ein vereinzelter Browser anders verhält, ist das irrelevant.
document.getElementById("t"+input).id = "SelectedPart";
document.getElementById("t"+Teil).id = "NotSelectet";
Dass jede ID nur ein einziges Mal in einem Dokument vorkommen darf, auch wenn sie per JavaScript geschrieben wird, hast Du beachtet?
} catch (e) {
//document.getElementById("t"+Teil).color = "#FFFFFF";
document.getElementById("t"+Teil).id = "NotSelectet";
} }
Bist Du sicher, dass Du mit try/catch arbeiten möchtest?
'null' ist Null oder kein Objekt, und zwar in der Zeile nach dem catch. Mir ist nicht klar wieso zurückfärben nicht funktioniert.
Was beinhalten denn die von Dir verwendeten Objekte und Variablen an der Stelle?
Cheatah
das musst Du mir erklären. _Weil_ Du eine serverseitige Technik bereits einsetzt, machst Du Dich von einer clientseitigen Technik abhängig? Für mich macht das wenig Sinn.
Es ging darum nicht wegen jeder Kleinigkeit wie eben Farbwechsel einer Schrift die ganze seite neu zu Laden, die doch ziemlich groß ist.
Dass jede ID nur ein einziges Mal in einem Dokument vorkommen darf, auch wenn sie per JavaScript geschrieben wird, hast Du beachtet?
also im Menü unten kommt jede id nur einmal vor. Eben von id="t1" bis z.B. id="t50"
Bist Du sicher, dass Du mit try/catch arbeiten möchtest?
Ist bei dem Problem unwesentlich, aber leider notwendig im Gesamten.
Was beinhalten denn die von Dir verwendeten Objekte und Variablen an der Stelle?
der input der Funktion ist eine Zahl, Variable Teil auch.
Hi,
Es ging darum nicht wegen jeder Kleinigkeit wie eben Farbwechsel einer Schrift die ganze seite neu zu Laden, die doch ziemlich groß ist.
aha, dann habe ich nur Deine Begründung falsch verstanden.
Dass jede ID nur ein einziges Mal in einem Dokument vorkommen darf, auch wenn sie per JavaScript geschrieben wird, hast Du beachtet?
also im Menü unten kommt jede id nur einmal vor. Eben von id="t1" bis z.B. id="t50"
Du setzt dynamisch die IDs "NotSelectet" und "SelectedPart". Auch diese dürfen jeweils nur maximal ein Mal vorkommen.
Bist Du sicher, dass Du mit try/catch arbeiten möchtest?
Ist bei dem Problem unwesentlich, aber leider notwendig im Gesamten.
Das glaube ich nicht. Eruiere den Grund für eine mögliche Exception, und eliminiere ihn anschließend.
Was beinhalten denn die von Dir verwendeten Objekte und Variablen an der Stelle?
der input der Funktion ist eine Zahl, Variable Teil auch.
Vermutungen bringen nichts. Überprüfe die Werte.
Cheatah
Dass jede ID nur ein einziges Mal in einem Dokument vorkommen darf, auch wenn sie per JavaScript geschrieben wird, hast Du beachtet?
also im Menü unten kommt jede id nur einmal vor. Eben von id="t1" bis z.B. id="t50"Du setzt dynamisch die IDs "NotSelectet" und "SelectedPart". Auch diese dürfen jeweils nur maximal ein Mal vorkommen.
hmm, dann wird es so nicht funktionieren. Ich bräuchte dann wohl eine Alternative Möglichkeit den Text einzufärben, die auch mit document.getElementById(..).xxx Befehl funktioniert.
Hi,
hmm, dann wird es so nicht funktionieren. Ich bräuchte dann wohl eine Alternative Möglichkeit den Text einzufärben, die auch mit document.getElementById(..).xxx Befehl funktioniert.
Tipp: Bei dem, was Du vorhast, handelt es sich um eine Klassifizierung.
Cheatah
Hi,
hmm, dann wird es so nicht funktionieren. Ich bräuchte dann wohl eine Alternative Möglichkeit den Text einzufärben, die auch mit document.getElementById(..).xxx Befehl funktioniert.
Tipp: Bei dem, was Du vorhast, handelt es sich um eine Klassifizierung.
Cheatah
Wenn damit
document.getElementById("t"+input).class = "SelectedPart";
gemeint ist, so war dies das erste was ich versucht hatte, aber da kamm sofort bei Seitenaufbau die Fehlermeldung: Bezeichner erwartet an der stelle von class. Es scheint .class nicht erlaubt sein bei getElementById(..)
document.getElementById("t"+input).style.color = "#FFDD00";
... funktioniert nun zumindest wieder wie vorher mit dem unschönen <font id="..">, nur jetzt mit <span id="..">. Aber habe noch immer das Problem, dass ich die Farbe in einem Stylesheet definieren möchte.
Hi,
Wenn damit
document.getElementById("t"+input).class = "SelectedPart";
gemeint ist, so war dies das erste was ich versucht hatte, aber da kamm sofort bei Seitenaufbau die Fehlermeldung: Bezeichner erwartet an der stelle von class. Es scheint .class nicht erlaubt sein bei getElementById(..)
.className
cu,
Andreas
Danke an die beiden Helfer, jetzt funktioniert es :)
Habe try und catch mal weggemacht zur Fehlererkennung und bisschen rumgespielt.
Irgendwie funktioniert immer nur das erste einfärben. Stoßt das Programm auf eine
document.getElementById("t"+Teil).id = "NotSelectet";
Zeile bekomme ich immer Fehlermeldung:
'document.getElementById(...)' ist Null oder kein Objekt.
dürfte eigentlich nicht so sein. Passiert auch wenn ich 2 mal die selbe Zahl übergebe.
Hi,
Irgendwie funktioniert immer nur das erste einfärben. Stoßt das Programm auf eine
document.getElementById("t"+Teil).id = "NotSelectet";
Zeile bekomme ich immer Fehlermeldung:
'document.getElementById(...)' ist Null oder kein Objekt.
bei allen Elementen, nur bei denen, denen Du mittlerweile eine andere ID gegeben hast, oder nur bei denen, denen Du eine ID zugewiesen hat, die ein anderes Element bereits hat?
dürfte eigentlich nicht so sein.
Dein Konzept hat grundlegende Schwächen, die sich insbesondere im Setzen von IDs widerspiegeln.
Cheatah