[ERLEDIGT] replace. innerhalb mehrerer Tabellenzeilen

  • Abschließende Lösung:

    Code
    function ReplaceTumorDok(){
        var tbl = document.getElementById("ID_tablecontrol0CC90632");
        for (var i = 0; i < tbl.rows.length; i++) {
                var txtNode= tbl.rows[i].cells[1].firstChild.firstChild;
                var eltxt = txtNode.nodeValue;
                eltxt = eltxt.replace('Tumordokumentation - ', '');
                txtNode.nodeValue = eltxt;
        }
    }

                             


    Nun nachdem ich Bücher gewälzt, einige Internetseiten studiert und ein paar mal im Kreis gelaufen bin stehe ich vor einem Problem. Habe mir eine funktionierende replace. Funktion gebastelt:

    Code
    function ReplaceText(){
        var txt = document.getElementById('ID_labelcontrol73E126A9');
        var eltxt = txt.firstChild.nodeValue;
        eltxt = eltxt.replace('Text', 'Test');
        txt.firstChild.nodeValue = eltxt;
    }

    Diese bezieht sich auf ein Textfeld. Was ich nun aber möchte ist in diesem Beispiel

    html-seminar.de/woltlab/attachment/1288/
    im onload in allen Zeilen "Tumordokumentation - " durch ' ' zu ersetzen.


    Sollte es so etwas wie ein Skript für "finde alles auf dieser Seite und ersetze" geben, hilft es mir nicht weiter. Die Überschrift soll ja bleiben.

    Kann man ein Skript basteln welches sich genau auf diese Spalte inkl. aller Zeilen bezieht?


    Sinn der Sache:
    Der wiedergegebene String entspricht Dateinamen. Diese haben den speziellen Suffix 'Tumordokumentation - ' um im System an bestimmten Ecken aufzufallen und schnell wiedergefunden zu werden. Auf einer Ansichtsseite, welche speziell zu diesem Thema läuft, braucht man den Suffix nicht. Die Dokumente wechseln aber und die Nutzer sollen nicht dazu gezwungen werden jedes mal über ein extra Formular nur für diese Seite selber einen Namen ohne Suffix anzugeben.

  • So kannst du gezielt auf die Zeilen und Spalten einer Tabelle zugreifen und den Inhalt bearbeiten:

  • Danke schon mal für die flotte Antwort!


    Bekomme nur meinen geliebten Nullverweis oder undefiniert Fehler...

    Code
    function ReplaceTumorDok(){
        var tbl = document.getElementById('ID_tablecontrol0CC90632');
        for (var i = 0; i < tbl.rows.length; i++) {
                var cell = tbl.rows[i].cells[1];
                var eltxt = cell.firstChild.nodeValue;
                eltxt = eltxt.replace('Tumordokumentation - ', '');
                cell.firstChild.nodeValue = eltxt;
        }
    }
  • ID_tablecontrol0CC90632 ist die ID der Tabelle?

    War das ein Intranet? Sonst würde ich empfehlen, die URL zu posten.

    Wenn nicht möglich, dann poste noch Mal einen Screenshot wo auch das <table>-Tag sichtbar ist und die fragliche Zelle aufgeklappt.

  • Ja das ist die ID. Wie zuvor mit dem Textfeld eine vorgegebene ID. Ich kann sie ändern, aber das Ergebnis bleibt das gleiche.
    Beim Textfeld, und auch sonst wenn ich mit anderen Elementen arbeite, klappt das ID-Aufrufen auch. Nur die Tabelle will mir nicht gelingen.


    Intranet, leider kein Zugang von außen.

    html-seminar.de/woltlab/attachment/1293/


    html-seminar.de/woltlab/attachment/1290/ html-seminar.de/woltlab/attachment/1291/


    Habe auch versucht die tablerecords ID (und andere dort aufgeführte) anzusprechen. Auch mit der guid. Alle mit dem gleichen Ergebnis:
    html-seminar.de/woltlab/attachment/1292/

  • Nachtrag aus einer anderen Applikation. Das ist nicht von mir geschrieben, aber spricht einen Teil der Tabelle an:

    Vielleicht kann man das auf die jetzige Situationen anwenden.

  • Nachtrag aus einer anderen Applikation. Das ist nicht von mir geschrieben, aber spricht einen Teil der Tabelle an:

    Vielleicht kann man das auf die jetzige Situationen anwenden.

    ich kann dir hierbei sowieso nicht helfen aber den code verstehe ich nicht . wozu eine else if abfragee wenn in beiden

    Code
    reload_tablecontrol325703F();

    das drinne steht? wozu tut man alle 150 millisekunden

    Code
    .removeAttr("href");

    das machen? nagut denke mal das es irgendein sinn haben wird,habe das so nocht nicht gesehen,deswegen meine frage. ok weiter machen :)

  • Das ganze gibt es so gar nicht mehr, bzw ist deaktiv ;) Da ging es um eine Überbrückung bis ein anderes Skript fertig ist. Und durch das Skript wurde erreicht, dass bestimmte Nutzer einen Link sehen, andere nur den Text. Standardmäßig hätten alle den Link gehabt. Das reload hat Inhalte der Tabelle aktualisiert, also auf neue Einträge geprüft. if/else hatte Sinn denn einmal blieben Links bestehen und einmal nicht. War nur zu unzuverlässig und austricksbar. Ist inzwischen aber einfacher und zuverlässiger gelöst. So mal gaaaanz grob beschrieben.

    Es ging mir jetzt nur drum zu zeigen wie es bereits geschafft wurde auf Tabellen zuzugreifen, nicht durch das alte Chaos verunsichern lassen ;)

  • Ah so, das Problem ist, dass in der Tabellenzelle noch ein span ist, in dem Fall muss man eine Ebene tiefer gehen:

    Code
    for (var i = 0; i < tbl.rows.length; i++) {
                var txtNode= tbl.rows[i].cells[1].firstChild.firstChild;
                var eltxt = txtNode.nodeValue;
                eltxt = eltxt.replace('test', 'repl');
                txtNode.nodeValue = eltxt;
            }
  • Also nun läuft es, vielen Dank!

    Es sieht so aus:

    Code
    function ReplaceTumorDok(){
        var tbl = document.getElementById("ID_tablecontrol0CC90632");
        for (var i = 0; i < tbl.rows.length; i++) {
                var txtNode= tbl.rows[i].cells[1].firstChild.firstChild;
                var eltxt = txtNode.nodeValue;
                eltxt = eltxt.replace('Tumordokumentation - ', '');
                txtNode.nodeValue = eltxt;
        }
    }

    Werde mir dann in Ruhe noch einmal das ganze zu Gemüte führen um zu verstehen was das Skript eigentlich alles macht. Muss zugeben, dass ich diese Tabellenanfragen mit rows und length bisher nur selten genutzt habe.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!