itebob: JavaScript versteht meine IF ... Then nicht ;-( ?

Hallo,

ich stehe vor einem Rätsel:

die beiden unten aufgeführte Funktionen wollen nicht auf die Variable FileExtensionPrmXMLorXSL so reagieren, wie ich mir es vorgestellt habe.
Mir reicht eigentlich eine Variante, aber ich habe beides ausprobiert und beides geht nicht.

Gearbeitet wird mit Internet Explorer 5.5.

Was ich brauche ist, dass bei
FileExtensionPrmXMLorXSL="XML"

diese zwei Anweisungen ausgeführt werden
    PathXMLFile_js = PathXMLDirPrm + FileName + ".xml";
    alert( "Path4XMLorXSL-InfO: \n\n PathXMLFile_js = " + PathXMLFile_js);

und bei
FileExtensionPrmXMLorXSL="XSL"

diese
    PathXSLFile_js = PathXSLDirPrm + FileName;
    alert( "Path4XMLorXSL-InfO: \n\n  PathXSLFile_js = " + PathXSLFile_js + ".xsl");

Aber bei mir  wird zum Beispiel auf "XML", wie im Code steht überhaupt nicht reagiert.
Nur 'XSL'-Zweig wird abgearbeitet. Und das verstehe ich nicht. Ich habe schon im IE in Internetoptionen 'Dateien Löschen mit Offline-Inhalte löschen' gemacht und in 'Einstellungen' die Aktualisierung bei jedem Zugriff auf die Seite gemacht - bringt nichts!

Was mache ich falsch?

gruss

itebob

Anlage: Programmcode

<html>
<head>
<title>Testen XML oder XSL-Endung </title>
<script type="text/javascript">

function IF_THEN()
// Variante 1 mit IF ... THEN:

{
var FileExtensionPrmXMLorXSL, PathXMLDirPrm, PathXSLDirPrm, FileName, PathXMLFile_js, PathXSLFile_js
FileExtensionPrmXMLorXSL = "xml"
PathXMLDirPrm = "X:/XML_Path/"
PathXSLDirPrm = "X:/XSL_Path/"
FileName = "xxxFileName"

if (FileExtensionPrmXMLorXSL ="xsl")
 { PathXSLFile_js = PathXSLDirPrm + FileName + ".xsl";
  alert( "Path4XMLorXSL-InfO: \n\n PathXSLFile_js = " + PathXSLFile_js);
  }
else if (FileExtensionPrmXMLorXSL ="xml")
      { PathXMLFile_js = PathXMLDirPrm + FileName+ ".xml";
       alert( "Path4XMLorXSL-InfO: \n\n  PathXMLFile_js = " + PathXMLFile_js );
      };
}

function SWITCH_CASE()
// Variante 1 mit SWITCH ... CASE:
{
var FileExtensionPrmXMLorXSL, PathXMLDirPrm, PathXSLDirPrm, FileName, PathXMLFile_js, PathXSLFile_js
FileExtensionPrmXMLorXSL = "xml"
PathXMLDirPrm = "X:/XML_Path/"
PathXSLDirPrm = "X:/XSL_Path/"
FileName = "xxxFileName"

switch(FileExtensionPrmXMLorXSL)
{  // XML-Block
  case "xml":
     PathXMLFile_js = PathXMLDirPrm + FileName + ".xml";
    alert( "Path4XMLorXSL-InfO: \n\n PathXMLFile_js = " + PathXMLFile_js);
   break;

// XSL-Block
   case "xsl":
    PathXSLFile_js = PathXSLDirPrm + FileName;
    alert( "Path4XMLorXSL-InfO: \n\n  PathXSLFile_js = " + PathXSLFile_js + ".xsl");
   break;
}
}

</script>
</head>
<body>
<p>IF_THEN Funktion
<a href="" onclick="javscript:IF_THEN()">starten</a>

</p>
<p>SWITCH_CASE Funktion
<a href="" onclick="javscript:IF_THEN()">starten</a>

</p>
</body>
</html>

  1. Huhu

    = != ==

    Viele Grüße

    lulu

  2. Hi!

    <script type="text/javascript">

    Es empfiehlt sich, das Script in einen HTML-Kommentar zu fassen (http://selfhtml.teamone.de/javascript/intro.htm#javascriptbereiche).

    function IF_THEN()
    // Variante 1 mit IF ... THEN:
    {
    var FileExtensionPrmXMLorXSL, PathXMLDirPrm, PathXSLDirPrm, FileName, PathXMLFile_js, PathXSLFile_js
    FileExtensionPrmXMLorXSL = "xml"
    PathXMLDirPrm = "X:/XML_Path/"
    PathXSLDirPrm = "X:/XSL_Path/"
    FileName = "xxxFileName"

    Schliesse JEDES Statement mit einem Semikolon ab! JS behauptet zwar, dass sei nicht noetig - und manchmal ist es das tatsaechlich nicht - aber man kann sich ueberlegen, dass ohne Semikolon nicht immer eindeutig ist, wo ein Statement zu Ende ist und das naechste anfaengt. Abgesehen davon sind Browser im allgemeinen sowieso ein bisschen bloed.

    if (FileExtensionPrmXMLorXSL ="xsl")

    ^^
    Das ist eine Zuweisung, kein Vergleich! Eigentlich haette Dir zumindest eine Warnung geliefert werden sollen. Das Ergebnis der Zuweisung ist immer true. Der if-Zweig wird ausgefuehrt, der Rest nie.

    Beim Vergleich (der geht mit ==, nicht =) denke daran, dass "xsl" nicht dasselbe ist wie "XSL". Verwende gegebenenfals String.toLowerCase().

    switch(FileExtensionPrmXMLorXSL)
    {  // XML-Block
      case "xml":
         PathXMLFile_js = PathXMLDirPrm + FileName + ".xml";
        alert( "Path4XMLorXSL-InfO: \n\n PathXMLFile_js = " + PathXMLFile_js);
       break;

    // XSL-Block
       case "xsl":
        PathXSLFile_js = PathXSLDirPrm + FileName;
        alert( "Path4XMLorXSL-InfO: \n\n  PathXSLFile_js = " + PathXSLFile_js + ".xsl");
       break;
    }

    Warum die switch-Variante nicht funktioniert, sehe ich auf den ersten Blick auch nicht.

    So long

    1. Hi, Calocybe!

      Das war es vermutlich:

      if (FileExtensionPrmXMLorXSL ="xsl")
                                      ^^
      Das ist eine Zuweisung, kein Vergleich! Eigentlich haette Dir zumindest eine Warnung geliefert werden sollen. Das Ergebnis der Zuweisung ist immer true. Der if-Zweig wird ausgefuehrt, der Rest nie.

      Beim Vergleich (der geht mit ==, nicht =) denke daran, dass "xsl" nicht dasselbe ist wie "XSL". Verwende gegebenenfals String.toLowerCase().

      Man lernt immer was dazu. Aber die meisten Fehler sind so dumm und kosten so viel Zeit!

      So long

      Danke.