[ERLEDIGT] IF Bedingung mit Boolean

  • Abschließende Lösung:

                                  



    Hallo zusammen!


    Ich bin JS Neuling und arbeite an einem Intranet welches über Intrexx aufgebaut und durch JS, Ajax und Co. ergänzt wird. Das ganze System bestand und wurde übernommen und weiter ausgearbeitet. Was oft Probleme aufbringt, aber leider nicht anders möglich ist.


    Nun stehe ich vor einem Problem: Das System verlangt es leider, dass Dokumente nach dem Einstellen 'veröffentlicht werden'. Was nur so viel bedeutet: Baum aufrufen, auf immer den gleichen Datensatz klicken, speichern. Um den Usern diesen Schritt zu ersparen ist das folgende Skript entstanden.


    Nach dem Anlegen wird versteckt eine Seite geladen welche das ganze durchführt, sehr schnell, nicht sichtbar und zu 100% Erfolg bislang. Der Nutzer sieht nur ein ganz kurzes "Bitte warten"


    Problem: Es gibt die Möglichkeit von bestehenden Dokumenten eine neue Version anzulegen (gleiche Eingabeseite wie bei neuen Datensätzen zwingend erforderlich). Hierbei werden alte Daten übernommen. Ergo: Das JS probiert weiterhin brav das ganze anzuwählen. Es erscheint die Fehlermeldung, dass der Datensatz im Baum bereits vorhanden ist und bleibt stehen. Der Datensatz ist drin, aber der User wird nicht mehr weitergeleitet.


    Um das zum Umgehen habe ich versucht eine IF Bedingung anzulegen. Veröffentlicht oder nicht wird über einen Boolean gespeichert. Diesen wollte ich auslesen lassen und als Bedingung nehmen ob das Skript nun anwählt und speichert oder direkt die Seite ohne Aktion verlässt und danach weiterleitet.

    Alternativ könnte man das Skript für den Seitenaufruf mit einer IF Bedingung belegen. Aber das kommt aufs gleiche Problem raus.


    Die Funktion wird beim onload gestartet. Er erkennt aber leider meine Bedingung nicht und versucht immer brav zu speichern und löst diesen Fehler aus. Wo habe ich in meiner IF Bedingung einen Fehler?


    Und ja bin mir sicher alles geht viel einfacher. Ich stecke als Fachfremder viel Hirnschmalz hinein und pauke Bücher über das Thema. Bislang bleibt es aber noch so "kompliziert".


    Ich würde mich über ein paar Tipps freuen und hoffe ich verstehe das ganze dann nun auch ^^

    Und auch wenn es eine viel bessere Lösung gibt wäre ich sehr dankbar um eine Erläuterung warum das bisherige nicht klappt und wie es gehen könnte. Immerhin möchte man ja noch dazu lernen ;)


    Zum einfacheren Lesen nochmal der Code ohne Kommentare:

  • muss das nicht zb so


    Code
    document.getElementById("3EA8EB411D11894A53B692733B5E84E0E704671A")

    heisen oder liege ich da irgendwie falschß


    und die if abfrage würde ich so machen

    Code
    if(published.innerHTML== "") {

    jenachdem was in der datei gespeichert wird .

    aber vieleicht liege ich auch wieder ganz falsch ,ich lerne selber noch.

    mal kucken was dieanderen sagen

  • Das weiß ich nicht. Wobei der untere ('else') Teil funktioniert, und dort steht auch alles ohne 'document.'
    Das Skript, mit Ausnahme der IF-Bedingung läuft, also mag es daran nicht liegen denke ich.


    EDIT: Das schlaue Buch vor mir (soweit ich es überhaupt verstehe) spricht auch von - document.getElementById - aber wieso an was rütteln das funktioniert :p

    Deinen zweiten Vorschlag verstehe ich leider nicht. Also die Abfrage bezieht sich auf einen Boolean der im Falle einer 'Veröffentlichung' den Wert 'true' wiedergibt.
    Dieser Boolean ist dem Datensatz zugeordnet mit welchem gerade gearbeitet wird.

  • der 2 te vorschlag ist jetzt uninteresant der bringt ja nix wenn nur true oder false ausgegeben werden.. ich habe das gerde getestet und wenn ich das it document.getElementById mache geht es auch.


    weil nur getelement gibts ja nicht deswegen kommt wohl auch immer false raus in dein ergebiss.


    so sehe ich es zumindest weiss nicht ob es richtig erklärt wurde. hast du es schon mal so versucht mit document.getElementById()

  • mach doch einfach so geht wohl am einfachsten


    Code
    if (document.getElementById("98A8664B1D51B29C9DA98962A2218CD9FD5DC4B0")){
        alert('true')
        } else {
        alert('false')
        }
    }

    must noch das andere alles rein schreiben das habe ich beim testen weg gelassen

  • Also erst einmal vielen Dank bis hierhin.


    Wieso kann es getElement allein nicht geben? Die bisher geschriebenen Skripte mit getElement funktionieren tadellos.

    Zudem gibt es auch im jetzigen Skript mehrere getElement. Der Baum und die Buttons werden damit aufgerufen.
    Oder geht es da um etwas ganz anderes und ich steh völlig auf dem Schlauch?


    Zum aktuellen Thema: Es funktioniert! Aber jetzt würde ich gerne wissen wieso. Woher geht denn bei diesem Skript heraus, dass der Wert 'true' gesucht ist? Es wird doch lediglich - IF (ID des Boolean) - kontrolliert.

  • Zum aktuellen Thema: Es funktioniert! Aber jetzt würde ich gerne wissen wieso. Woher geht denn bei diesem Skript heraus, dass der Wert 'true' gesucht ist? Es wird doch lediglich - IF (ID des Boolean) - kontrolliert.

    ich bin selber noch nicht so gut ,ich kenne das nur mit document davor weil nur getelement geht wohl nur wenn ein elemenet einmal vorhanden ist oder so ,kein plan . das wird hoffentlich dann einer genauer erklären .. du sagst es geht jetzt . was hast du jetzt gemacht???


    wenn du das script von mir genommen hast sucht er in der if abfrage ob es das document mit der id="98A8664B1D51B29C9DA98962A2218CD9FD5DC4B0" gibt. wenn ja ist der wert true . exestiert das document nicht ist der wert gleich false

  • Wie du mir geraten hattest, deinen Code übernommen:

    Code
    function selectTree(){
    if (document.getElementById("98A8664B1D51B29C9DA98962A2218CD9FD5DC4B0")){
        var oButton = getElement("3EA8EB411D11894A53B692733B5E84E0E704671A").onclick();
        } else {
        var tree = getElement("C3C6FDF7A9109D26EF75AAB6B4612B8205A8F740");
        tree.oUp.selectItem(42);
        var oButton = getElement("D4C7AD31FC9BDDDF7EE24317A886C25701965876").onclick();
        return true;
        }
    }


    Zitat

    wenn du das script von mir genommen hast sucht er in der if abfrage ob es das document mit der id="98A8664B1D51B29C9DA98962A2218CD9FD5DC4B0" gibt. wenn ja ist der wert true . exestiert das document nicht ist der wert gleich false

    Ok dann ist es wohl in diesem Fall eine reine "Gibt es diese Daten überhaupt" Abfrage geworden. Und da es in dem Fall genau so hin kommt hat es gepasst.

    Aber bin mir sicher, dass ich an anderer Stelle eine wirkliche 'true or false' IF Abfrage gebrauchen kann. Würde mich sehr freuen wenn jemand dazu was hat!

  • dann zeig mal den code wofür du den brauchst aber true oder if abfrage ist ja eigentlich das was du ganz oben schon gemacht hast ,da wahrst du schon auf den richtigen weg.

    also ich würde das dann so versuchen .

    genaueres kann ich nur mit vorhandenen code sagen wie ich es machen würde

    Code
    var published=document.getElementById(id);
    if (published ===true) {
    alert('true')
        } else if(published===false){
    alert('false')
        }else{
    alert('Hier stimmt was nicht ')
    }
  • Das hat nun funktioniert. Zum testen habe ich einfach die bestehende Situation genommen. Waren wirklich nur noch Kleinigkeiten, welche gestört hatten.


    Vielen Dank!

Jetzt mitmachen!

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