JavaScript versteht meine IF ... Then nicht ;-( ?
itebob
- javascript
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>
Huhu
= != ==
Viele Grüße
lulu
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
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.