Funktionsaufruf klappt nur intern, extern nicht

@gianfranco0104 Leider hast du nicht gezeigt, wie du die Skripte im HTML einbettest. Vor allem in welcher Reihenfolge du sie lädst! Was heißt es außerdem, wenn dein Code "nicht funktioniert"? Bekommst du eine Fehlermeldung? Ist deine Variable aus der IF-Bedingung überhaupt in dem Kontext, in dem du sie abfragst, verfügbar?

Füge mal ein console.log(dein-variablen-name); vor dem IF ein (du kannst natürlich auch einen Breakpoint + Debugger nutzen).
Nutzt du den ES5 Strictmode irgendwo?
 
Der ie11 Debugger bringt "Funktion erwartet".
Einbetten tue ich sie so, im Head-Bereich:

HTML:
<script src="js/main_script.js" type="text/javascript" ></script>
<script src="js/projecthandler.js" type="text/javascript"></script>
function dropdown_hub1_vc() ist im maib_script.js
Und die anderen beiden im projecthandler.js
Normalerweise wird der erste zuerst geladen.
Kenne ES5 Strictmode nicht, bin absoluter Anfänger :)

Wenn ich das ganze wie folgt mach, funktioniert es (ist aber unschön):
Javascript:
....
attrCount++;
        }
      
        //Attribute wieder in den Wizzard einfügen
        projektname_input.value = Projectname
        hub_1                     = Hub1
        /*dropdown_hub1_vc*/    if (setdropdown_hub1_vc === true){ ausfuehren(); }
      
    }

function ausfuehren(){dropdown_hub1_vc(); }

bin für heute weg, kann morgen erst wieder schauen/antworten.
bis dann
 
Der ie11 Debugger bringt "Funktion erwartet".
Das ist ein Syntaxfehler.

In welcher Datei und in welcher Zeile tritt dieser auf? Bitte kopiere den entsprechenden Abschnitt hier rein.
In folgendem Codeabschnitt erkenne ich schon mal einen Syntaxfehler:
Javascript:
function dropdown_hub1_vc() {
  // -------------------------------------------------------------------v
  MM_DW_effectSlide($('#wizard_hub1_dd_div'),'hide','slide','up',500,330);
Fehlt da nicht eine schließende runde Klammer?

Wenn du Strict Mode nicht kennst, dann nutzt du diesen höchstwahrscheinlich auch nicht. Man muss diesen per "use strict"-Direktive aktivieren.
 
Klammern sine korrekt geschlossen., 2 auf, 2 zu. Diese Funktion wird auch problemlos ausgeführt wenn ich sie von wo anders starte. Ich habe noch eine onClick Anweisung, wo ich auch auf die problemlos zu greife.
Der Fehler ist genau in Zeile 26 und beim Befehl, den ich ausführen will, also in der if-anweisung, nach "... = true", also dort wo ich meinen Funktionsaufruf machen will.

debug.jpg


Aber wie gesagt, wenn ich es wie folgt mache klappt es ja perfekt :
Javascript:
....
attrCount++;
        }

        //Attribute wieder in den Wizzard einfügen
        projektname_input.value = Projectname
        hub_1                   = Hub1
        /*dropdown_hub1_vc*/    if (setdropdown_hub1_vc = true){ ausfuehren(); }

    }

function ausfuehren(){dropdown_hub1_vc(); }
 
Zuletzt bearbeitet:
Also, ich mache das Ganze jetzt anders und so klappt es dann auch wunderbar, allerdings habe ich dann ein neues Problem - ist wirklich der Wurm drin oder ich steh so auf dem schlauch, vor allem habe ich das so schon 1000-Mal gemacht, aber es will nicht. (Erklärungen im Code)

Javascript:
// Xml Werte wieder einlesen bei OPEN, dateien müssen erst wieder ausgepackt sein
function LoadXML(xmlFile)
    {
        xmlDoc.load(xmlFile);
        return xmlDoc.documentElement;
    }

function loadXMLWizConf()
    {
        var xmlObj = FILENAME;
        var Confs = new Array();
        var xmlObj;
        xmlObj = LoadXML(FILENAME);
   
        //attribute wieder auspacken
        var attrCount = 0;
        while (attrCount < xmlObj.childNodes.length) {
            var Projectname = xmlObj.childNodes(attrCount).getAttribute("Projectname")
            var Hub1        = xmlObj.childNodes(attrCount).getAttribute("Hub1")
            var valuedropdown_hub1_vc = xmlObj.childNodes(attrCount).getAttribute("valuedropdown_hub1_vc")
            var valuedropdown_hub1_sc = xmlObj.childNodes(attrCount).getAttribute("valuedropdown_hub1_sc")
            attrCount++;
        }
   
        //Attribute wieder sammeln
        projektname_input.value = Projectname
        hub_1                     = Hub1
        setdropdown_hub1_vc        = valuedropdown_hub1_vc
        setdropdown_hub1_sc        = valuedropdown_hub1_sc
        //alert(setdropdown_hub1_vc) <--- hier kommt true (ist so richtig)
        //alert(setdropdown_hub1_sc) <--- hier kommt false (ist so richtig)
   
        rewriteWizard();
    }

function rewriteWizard() { // Gesammelte Attrribute in den WIzard eintragen
        alert(setdropdown_hub1_vc) //<--- hier kommt true (ist so richtig)
        alert(setdropdown_hub1_sc) //<--- hier kommt false (ist so richtig)

        if (setdropdown_hub1_vc == true){ alert('vc ist true') } else {alert('nicht true vc');} // hier ist es nicht mehr TRUE (ist so falsch)
        if (setdropdown_hub1_sc == true){ alert('sc ist true') } else {alert('nicht true sc');} //// hier ist es nicht mehr TRUE (ist so eigentlich richtig, aber wenn SC mal true ist, ist es trotzdem nicht auf true)

}
Wieso erkennt meine IF-Anweisung nicht, dass meine Objekte TRUE oder False sind (== oder ===) aber außerhalb der If-Anweisung wird erkannt welcher der Status ist? Das einzige was ich mir vorstellen könnte ist, dass durch das geladene XML der Wert "true" oder "false" als Text eingelesen wird und der Interpreter das nicht als (ich nenne es mal) echtes "true/false" erkennt, kann das sein? So wird die XML beschrieben:
Code:
<?xml version="1.0" encoding="utf-8"?>

<WizardConf>

    <Confs Projectname="Projektname-Test"
Hub1="true"
valuedropdown_hub1_vc="false"
valuedropdown_hub1_sc="true"
valuedropdown_hub1_disp="false"
valuedropdown_hub1_cv="false"

></Confs>

</WizardConf>

UPDATE 01

ich habe jetzt mal if (setdropdown_hub1_vc === "true") getestet, dann klappt es. war die Vermutung also korrekt, er hat das als TEXT gesehen. So haut es hin und vorallem alles haut jetzt hin, so wie ich es Brauche :) :)
Suspekt ist mir nur das Ganze, dass ich mit meiner Funktion raus musste (also über rewriteWizard(); ) aber im Endeffekt ist das für mich so OK - es läuft!
Danke euch allen für die tolle Unterstützung.
 
Zuletzt bearbeitet:
Zurück