SharePointCommunity
Die deutschsprachige Community für SharePoint, Office 365 und mit Azure

JavaScript Funktionen werte übergeben

bewertet von 0 Usern
Nicht beantwortet Dieser Beitrag hat 0 Geprüfte Antworten | 3 Antworten | 1 Follower

Top-50-Beitragsschreiber
Weiblich
264 Beiträge
ExpoIT erstellt in 14 Jul 2017 9:21

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

Viele Grüße AS

Alle Antworten

Top-10-Beitragsschreiber
Männlich
18.180 Beiträge

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
Top-50-Beitragsschreiber
Weiblich
264 Beiträge

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

Top-10-Beitragsschreiber
Männlich
18.180 Beiträge

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
Seite 1 von 1 (4 Elemente) | RSS