jmor: farbwechsel von schrift bei aktion

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:)

  1. 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

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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.

      1. 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

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. 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.

          1. 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

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. 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(..)

              1. 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.

              2. 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

                --
                MudGuard? Siehe http://www.Mud-Guard.de/
                Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                1. Danke an die beiden Helfer, jetzt funktioniert es :)

  2. 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.

    1. 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

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes