SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




JavaScript Funktionen werte übergeben

Unbeantwortet Dieser Beitrag hat 3 Antworten

Ohne Rang
354 Beiträge
ExpoIT erstellt 14 Juli 2017 09:21
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo, 

ich als newbie in JavaScript brauche wieder einmal Hilfe. Ich versuche mal eine allgemeine Beschreibung:

function a(){

var variable1=....;

b(variable1);

c(variable1);

}

function b(variable1){

...

this.list=....

....

context.load(list);

context.....(c,....)

}

function c(){

var id = list.get_id();

c(id);

}

function c(variable1){

....

}

Ich hoffe so reicht es aus, um zeigen zu können, dass meine function c 2 werte braucht, aber ich weiß nicht, wie ich es aufrufen kann. Wie kann ich schon in function b die function c aufrufen und dabei sowohl variable1 behalten und variable list übergeben? Ich glaube, das würde mich dann zu meiner lösung bringen.

Danke schon mal für die Mühe

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Juli 2017 10:20
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also so ganz habe ich nicht verstanden wo genau Dein Problem ist...

Mal vorweg: in JavaScript mußt Du mit "this" extrem vorsichtig sein, besonders wenn Du von C# kommst. Das verhält sich in JS anders.

Dann solltest Du Dich ganz allgemein schlau machen, wie man in JavaScript sowas wie die Namespaces in C# erreichen kann. Das erleichtert das Leben sehr und Du mußt dann auch nicht immer alles als Parameter weiterreichen.

Zur eigentlichen Frage hilft Dir vielleicht das:

function a() {
var variableA = ...;
b(variableA);
}

function b(varA) {
var variableB = ...;
c(varA, variableB);
}

function c(varA, varB) {
// mach was mit varA und varB
}

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
354 Beiträge
ExpoIT Als Antwort am 14 Juli 2017 13:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Also, so sieht es bei mir aus:

 

function createNewTask(title) {

var context = SP.ClientContext.get_current();

var list = context.get_web().get_lists().getByTitle('Tasks');

var info = new SP.ListItemCreationInformation();

this.listItem = list.addItem(info);

listItem.set_item("Title", title);

listItem.update();

context.load(listItem, title);   //diese zwei Werte braucht meine nächste Funktion

context.executeQueryAsync(loadItems, function () {

alert('3Error fetching data from Sharepoint!');

});

}

 

function loadItems(mylist, selected) {

var aufgabenId = listItem.get_id();

alert("loaditems1 " + listItem.get_id());

alert("selected: " + selected);

var context = SP.ClientContext.get_current();

var rootWeb = context.get_site().get_rootWeb();

var listUA = rootWeb.get_lists().getByTitle('Unteraufgaben');

.......

 

hab das so einfach nicht hinbekommen, vielleicht wird es so verständlicher, was ich meine. Ich bekomme einfach die listItem nicht übergeben, die fehlt mir.

 

Viele Grüße AS

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 14 Juli 2017 14:38
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Das Einfachste wäre, Du läßt die benannte Funktion loadItems weg und nimmst stattdessen eine anonyme Funktion, so wie Du es für die Fail-Funktion gemacht hast. In der anonymen Funktion kannst Du ganz normal auf Variablen zugreifen, die "drumrum" definiert sind.

Eine andere halbwegs einfache Methode: definiere außerhalb von all dem z.B. sowas:
var myGlobals = {};

Innerhalb der ersten Funktion legst Du alles, was Du später wiederverwenden möchtest, dort ab:
myGlobals.listItem = ...;

Und genau so kannst Du dann auch wieder von überall darauf zugreifen.

Viele Grüße
Andi
af @ evocom de
Blog