Abschließende Lösung:
function selectTree(){
var published = document.getElementById("98A8664B1D51B29C9DA98962A2218CD9FD5DC4B0");
if (published === true) {
var oButton = getElement("3EA8EB411D11894A53B692733B5E84E0E704671A").onclick();
} else {
var tree = getElement("C3C6FDF7A9109D26EF75AAB6B4612B8205A8F740");
tree.oUp.selectItem(42);
var oButton = getElement("D4C7AD31FC9BDDDF7EE24317A886C25701965876").onclick();
return true;
}
}
Alles anzeigen
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
function selectTree(){
var published = getElement("98A8664B1D51B29C9DA98962A2218CD9FD5DC4B0"); // Das Datenfeld in welchem der Boolean 'veröffentlicht' gespeichert wird.
if (published.checked == true) {
var oButton = getElement("3EA8EB411D11894A53B692733B5E84E0E704671A").onclick(); // Ein Button der die Seite verlässt und weiterleitet, ohne zu speichern.
} else {
var tree = getElement("C3C6FDF7A9109D26EF75AAB6B4612B8205A8F740"); // Auswahl des Daten-Baums.
tree.oUp.selectItem(42); // ID des Eintrages
var oButton = getElement("D4C7AD31FC9BDDDF7EE24317A886C25701965876").onclick(); // Ein Button der die Seite verlässt, speichert und weiterleitet.
return true;
}
}
Alles anzeigen
Zum einfacheren Lesen nochmal der Code ohne Kommentare:
function selectTree(){
var published = getElement("98A8664B1D51B29C9DA98962A2218CD9FD5DC4B0");
if (published.checked == true) {
var oButton = getElement("3EA8EB411D11894A53B692733B5E84E0E704671A").onclick();
} else {
var tree = getElement("C3C6FDF7A9109D26EF75AAB6B4612B8205A8F740");
tree.oUp.selectItem(42);
var oButton = getElement("D4C7AD31FC9BDDDF7EE24317A886C25701965876").onclick();
return true;
}
}
Alles anzeigen