Namen der JavaScript Funktionen

Die Namen der aufgerufenen JavaScript Funktionen sind beliebig. Die maximale Länge des Namens beträgt 255 Zeichen.
Tip: In JavaScript-Funktionsnamen nur ASCII-Zeichen verwenden, also z.B. keine Umlaute.

Gross-/Kleinschreibung der Funktionsnamen

Es ist möglich, aber nicht zu empfehlen, in JavaScript Funktionen zu implementieren, deren Namen sich nur durch Gross-/Kleinschreibung unterscheiden.  Der JavaScript-Aufruf aus GuiXT findet die Funktion zwar auch bei anderer Gross/Kleinschreibung (sofern es sich um ASCII-Zeichen handelt) und ruft bei exakter Schreibweise die richtige Funktion auf; durch die ähnlichen Namen wird es aber doch etwas verwirrend.
 
Beispiel:

function abc()
{
 
return "abc";
}

function Abc()
{
  return "Abc";
}

function Überschrift()
{
 
return "Überschrift";
}

 

Parameterübergabe

Bei CallJS kkönnen Sie bis zu 50 Parameter mitgeben. Die Maximallänge des übergebenen Wertes pro Parameter ist ca. 8000 Zeichen (die Übergabe von Langtextvariablen sowie strukturierten Variablen ist weiter unten beschrieben).

Beispiel: Die folgende JavaScript-Funktion ermittelt die Position einer Zeichenreihe t innerhalb einer Zeichenreihe s:

function indexOf(s, t)
 {
  
return s.indexOf(t);
 }

Aufruf in GuiXT zum Beispiel mit:

CallJS x = indexOf "London" "do"
Message "&V[x]"

 

 

Optionale Parameter

Insbesondere bei der späteren Erweiterung von JavaScript Funktionen um zusätzliche Parameter ist es nützlich, die neuen Parameter mit  Defaultwerten zu versehen, um nicht alle Scripte anpassen zu müssen, welche die Funktion aufzurufen. Das geht durch die Abfrage, ob ein Parameter den Typ 'undefined' hat:

function split(s, delimiter)
{

  // set default delimiter
 
if (typeof (delimiter) == 'undefined') delimiter = ";";
  ...

}

Variabel viele Parameter

Falls der Aufruf einer JavaScript Funktion mit variabel vielen Parametern möglich sein soll, können Sie in JavaScript das Objekt "arguments" verwenden. Dabei beachten, dass "arguments" kein  JavaScript-Array ist, obwohl man auf die einzelnen Parameter wie bei einem Array über einen Index 0,1,2,... zugreifen kann. Bei Bedarf zunächst in ein wirkliches Array umwandeln.

Beispiel: Die folgende Funktion kann mit einer variablen Anzahl von Strings aufgerufen werden. Sie gibt die Strings in Form einer Liste (x,y,...) zurück:

function buildList()
 {
   // array
 
  var a = [];
 
   // convert arguments list to array
 
  for (var i = 0; i < arguments.length; ++i)
   {
     a.push(arguments[i]);
   };
 
 // return list via "join"
 
return "(" + a.join(",") + ")";
 
 }


CallJS mylist = buildList "London" "Rome" "Berlin"
 
Message "&V[mylist]"

 

Langtextvariablen

Es ist nicht ratsam,  den Inhalt einer Langtextvariablen "mytext"  bei CallJS in der Form "&text[mytext]"mitzugeben, da dann die Maximallänge auf 8000 Zeichen begrenzt ist. Geben Sie stattdessen nur den Namen der Textvariablen mit und lesen SIe den Inhalt in JavaScript mit guixt.GetText(). Analog können Sie in die GuiXT Langtextvariablen mit guixt.SetText() einen neuen Inhalt schreiben. DIe Länge ist dann in beide Richtungen nicht begrenzt.

Beispiel: Die folgende JavaScript Funktion zählt die Anzahl Wörter in einem Text.

function wordcount(textname)
 {
 
 
// read GuiXT long text variable
 
var s = guixt.getText(textname);
 
 
// count words
 
var w = s.split(/[^\s]+/).length - 1;
 
 
return w;
 
 }

Textbox (2,2) (10,60) name="mytext"
 
CallJS n = wordcount "mytext"

Text (11,3) "&V[n] Worte"

 

Strukturvariablen und Tabellenvariablen

Ähnlich wie GuiXT Langtextvariablen können Sie auch GuiXT Strukturvariablen sowie Tabellenvariablen als Ganzes aus JavaScript heraus lesen und schreiben. Da GuiXT das JSON Format unterstützt (JavaScript Object Notation), sind die Funktionen JSON.parse() und JSON.stringify() zur Konvertierung ausreichend:

// Einlesen einer GuiXT Struktur- oder Tabellenvariablen
// als JavaScript Objekt
var myobj = JSON.parse(guixt.Get(myvar));
 

// Schreiben einer GuiXT Struktur- oder Tabellenvariablen
// aus einem JavaScript Objekt
guixt.Set(mytable, JSON.stringify(myobj));

Beispiele finden Sie in den "Tips, Trick and Samples" zu JavaScript, etwa in Convert GuiXT table to array