Susi: Style einer Zelle ändern wenn Inhalt bestimmten Text enthält

Hallöchen zusammen :-)

ich habe eine kleine Frage!
In einer Tabelle ändere ich per JavaScript die Einträge:

zum Beispiel wird geschaut ob eine in einer Spalte irgendwo das Wort "Check" auftaucht und wird dann geändert in "Pruefe Wert"!
Das mache ich so:

<script type="text/javascript">
var what=document.getElementsByTagName("td");
for (i = 0; i < what.length; i++ )
{
what[i].innerHTML = what[i].innerHTML.replace('Check', 'Pruefe Wert');
}
</script>

Das funktioniert wie gesagt ganz gut. Nun möchte ich aber das genau in den Zellen wo "Check" steht nicht nur der Text in "Pruefe Wert" geändert wird. Gleichzeitig möchte ich das Style dieser gefundenen Zellen ändern. Sie sollen Rot und Mittig sein. Leider kam ich nur bis zum Replace. Weiss jemand einen Rat?

Viele Grüße aus dem schönen München :))
Susi

  1. hi,

    what[i].innerHTML = what[i].innerHTML.replace('Check', 'Pruefe Wert');

    Das funktioniert wie gesagt ganz gut. Nun möchte ich aber das genau in den Zellen wo "Check" steht nicht nur der Text in "Pruefe Wert" geändert wird. Gleichzeitig möchte ich das Style dieser gefundenen Zellen ändern. Sie sollen Rot und Mittig sein. Leider kam ich nur bis zum Replace.

    Du kannst nicht nur replace-n mit dem Regex-Objekt, sondern auch search-en.
    Wenn sich also der gesuchte Text in einem TD-Inhalt befindet, dann ändere entweder dessen CSS-Eigenschaften direkt über style, oder ändere bspw. seine Klasse.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo wahsaga,
      hab vielen Dank für den Hinweis! Ich habe das Coding im Internet gefunden gehabt, weil ich noch nicht Fit bin mit JavaScrip! Das mit den Klassen habe ich auch schon gesehen nur wie kann ich gezielt den Inhalt ansprechen! Ich finde nichts was mir gezielt helfen könnte. Die Tabellenzeilen haben keine ID. Ich habe daher nur den Inhalt der Zelle als Anker. Kann man an diese Replace-Funktion nicht irgendwie die Klasse noch mitgeben?
      Viele Grüße,
      Susi

      1. hi,

        Das mit den Klassen habe ich auch schon gesehen nur wie kann ich gezielt den Inhalt ansprechen! Ich finde nichts was mir gezielt helfen könnte. Die Tabellenzeilen haben keine ID.

        Brauchen sie auch nicht.

        Ich habe daher nur den Inhalt der Zelle als Anker.

        Nein, du arbeitest bereits mit der Tabellenzelle, greifst auf ihre innerHTML-Eigenschaft zu.
        Ihre Klasse oder ihr style sind lediglich weitere Eigenschaften bzw. -Objekte.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. n'abend,

    Das funktioniert wie gesagt ganz gut. Nun möchte ich aber das genau in den Zellen wo "Check" steht nicht nur der Text in "Pruefe Wert" geändert wird. Gleichzeitig möchte ich das Style dieser gefundenen Zellen ändern. Sie sollen Rot und Mittig sein. Leider kam ich nur bis zum Replace. Weiss jemand einen Rat?

    Du könntest mittels String.indexOf() prüfen, ob "Check" in deinem Text enthalten ist, und dann entsprechend reagieren. Mache dir das Wissen zu Nutze, dass die Funktion -1 zurückgibt, wenn "Check" nicht gefunden werden konnte.

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
  3. Hi,

    Das funktioniert wie gesagt ganz gut. Nun möchte ich aber das genau in den Zellen wo "Check" steht nicht nur der Text in "Pruefe Wert" geändert wird. Gleichzeitig möchte ich das Style dieser gefundenen Zellen ändern. Sie sollen Rot und Mittig sein. Leider kam ich nur bis zum Replace. Weiss jemand einen Rat?

    Theorie:
    in CSS 3 gibt es den Selector :contains("foo")

    Praxis:
    wird meines Wissens bis jetzt nur von Konqueror ab 3.4.0 unterstützt.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.