• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] JavaScript-Befehl für Adobe LiveCycle / Anzeige von Objekt X - bis Objekt Y

Jones89

New member
Hallo Leute,

ich habe folgendes Problem.

Ich erstelle für die Arbeit ein PDF-Formular, das alle Mitarbeiter benutzen sollen.

Wählt ein Mitarbeiter über eine Dropdownliste eine Abteilung aus, sollen folgende Daten erscheinen. Funktioniert auch alles soweit! Ich möchte aber ein paar Objekte (1 - 15) anzeigen lassen.

Also ein von - bis Befehl....bis jetzt zeigt er bei dem Befehl " this.resolveNode("LV1").presence = "visible"; " halt nur LV1 an, aber er soll LV1 bis LV15 anzeigen.

Müsste sonst alle 15 Dateien einzeln eintippen also... this.resolveNode("LV1").presence = "visible"; ..... this.resolveNode("LV2").presence = "visible"; ....usw.

Gibt es ein Befehl dafür, sodass ich nicht alles eintippen muss?

Viele Grüße und danke im Voraus.
 
Zuletzt bearbeitet von einem Moderator:
Mit einer Schleife:
Code:
for(var x = 1; x <= 15; x++){
  this.resolveNode("LV" + x).presence = "visible";
}
 
Eine Frage habe ich doch noch :). Kann ich auch ein Objekt auslassen ( z.B. 9 ) und mit 10 weiter machen? Wenn ja, wie lautet der Befehl?

Vielen Dank im Voraus und für die tolle Hilfe.
 
Vielen Dank! Ihr habt mir sehr geholfen.

- - - Aktualisiert - - -

Kann ich auch statt ein Objekt mehrere Ausblenden? Also Objekt 6 - 8 und 11 -13 ?
 
Kann ich auch statt ein Objekt mehrere Ausblenden? Also Objekt 6 - 8 und 11 -13 ?
Code:
var start, end, skip, skipThis;

//kann angepasst werden:
start = 1; //Start der Schleife bei 1
end = 15; //Ende der Schleife bei 15
skip = [6, 7, 8, 11, 12, 13]; //diese Elemente sollen ausgelassen werden

//ab hier nichts mehr ändern
for(var x = start; x <= end; x++){
  skipThis = false;
  for(var i = 0; i < skip.length; i++){
    if(skip[i] === x){
      skipThis = true;
      break;
    }
  }
  if(skipThis){
    continue;
  }
  this.resolveNode("LV" + x).presence = "visible";
}
 
Super. Vielen Dank für die schnelle Antwort. Muss ich die Nummern alle einzeln eintragen oder gibt es eine von - bis ( 21 - 45) Funktion?
 
Muss ich die Nummern alle einzeln eintragen oder gibt es eine von - bis ( 21 - 45) Funktion?
Gibt es, dann wird das Ganze halt noch ein wenig komplizierter:
Code:
function setupLoop(start, end, elementsToSkip){

	var skip, skipArr, skipInt, skipThis;
	skip = elementsToSkip.split(",");
	skipArr = [];
	for(var i = 0; i < skip.length; i++){
		skipInt = skip[i].split("-");
		if(skipInt.length === 2){
			var from, to;
			from = skipInt[0] * 1;
			to = skipInt[1] * 1;
			for(var ii = from; ii <= to; ii++){
				skipArr.push(ii);
			}
		}
		else{
			skipArr.push(skip[i] * 1);
		}
	}

	for(var i = start; i <= end; i++){
		skipThis = false;
		for(var ii = 0; ii < skipArr.length; ii++){
			if(skipArr[ii] === i){
				skipThis = true;
				break;
			}
		}
		if(skipThis){
			continue;
		}
		console.log(i);
		this.resolveNode("LV" + i).presence = "visible";
	}
}

setupLoop(1, 15, "2,4-7,10"); //startet bei 1, endet bei 15, lässt die Zahlen 2, 4, 5, 6, 7 und 10 aus
 
Zuletzt bearbeitet:
Ok, danke. Das geht bei mir aber nicht. Für das einfache "i" muss ich doch mein Objektnamen (K) eingeben oder?

Das andere funktionierte alles.
 
Zuletzt bearbeitet:
Wie genau meinst du?

Wenn du das Skript mal unverändert übernimmst und in die Konsole schaust, siehst du, dass die Zahlen 1, 3, 8, 9, 11, 12, 13, 14, 15 geloggt werden.
 
In meinem PDF-Formular sind mehrere Objekte (K1 - K90). Wählt jetzt jemand per Dropdownliste eine Abteilung aus. Sollen nur bestimmte Felder angezeigt werden.

Muss ich dann für das "i" das "K", also für die Objekte (K1 - K90), eingeben?
 
Muss ich dann für das "i" das "K", also für die Objekte (K1 - K90), eingeben?
Wichtig: Du darfst nichts an der Funktion ändern!
Du musst als Aufruf
setupLoop(1, 15, "2,4-7,10"); //startet bei 1, endet bei 15, lässt die Zahlen 2, 4, 5, 6, 7 und 10 aus
entsprechend anpassen.

Wenn du es nicht hinkriegen solltest, zeig bitte mal das komplette Skript.
 
HTML:
// B7
if ($.boundItem(xfa.event.newText) == "B7") { 
  this.resolveNode("AD-Gruppe").presence = "visible";
  this.resolveNode("AD-Gruppe").rawValue = " BG_B7 ";
  this.resolveNode("Oracle").presence = "invisible";
  this.resolveNode("Oracle").rawValue = "  ";
  this.resolveNode("nScale").presence = "invisible";
  this.resolveNode("nScale").rawValue = "  ";
  this.resolveNode("Wiki").presence = "invisible";
  this.resolveNode("MText").presence = "visible";
  this.resolveNode("MText").rawValue = " Rechte für Abteilung B7 einstellen ";
  this.resolveNode("Tewis").presence = "visible";
  this.resolveNode("Tewis").rawValue = " Herr Mustermann - Novell-Name: MUSTER ";
  this.resolveNode("Verzeichnisse").presence = "visible";
  this.resolveNode("Verzeichnisse").rawValue = " Keine ";
  this.resolveNode("OE-ID").presence = "visible";
  this.resolveNode("OE-ID").rawValue = "643";
  this.resolveNode("Tele").presence = "visible";
  this.resolveNode("Tele").rawValue = "4433";
  this.resolveNode("Fax").presence = "visible";
  this.resolveNode("Fax").rawValue = "3257";
  this.resolveNode("T-Pers_S_OE").presence = "visible";
  this.resolveNode("Pruef").presence = "visible";
  this.resolveNode("Pruef").rawValue = " BLV-VTR-Änderung";
  this.resolveNode("#subform[2]").presence = "visible";
}

function setupLoop(start, end, elementsToSkip){

	var skip, skipArr, skipInt, skipThis;
	skip = elementsToSkip.split(",");
	skipArr = [];
	for(var i = 0; i < skip.length; i++){
		skipInt = skip[i].split("-");
		if(skipInt.length === 2){
			var from, to;
			from = skipInt[0];
			to = skipInt[1];
			for(var ii = from * 1; ii <= to; ii++){
				skipArr.push(ii);
			}
		}
		else{
			skipArr.push(skip[i] * 1);
		}
	}

	for(var i = start; i <= end; i++){
		skipThis = false;
		for(var ii = 0; ii < skipArr.length; ii++){
			if(skipArr[ii] === i){
				skipThis = true;
				break;
			}
		}
		if(skipThis){
			continue;
		}
		console.log(i);
		this.resolveNode("K" + i).presence = "visible";
	}
}

setupLoop(1, 114, "2,4-7,10"); //startet bei 1, endet bei 15, lässt die Zahlen 2, 4, 5, 6, 7 und 10 aus
 
Zuletzt bearbeitet von einem Moderator:
Code:
var start, end, skip, skipThis;

//kann angepasst werden:
start = 1; //Start der Schleife bei 1
end = 15; //Ende der Schleife bei 15
skip = [6, 7, 8, 11, 12, 13]; //diese Elemente sollen ausgelassen werden

//ab hier nichts mehr ändern
for(var x = start; x <= end; x++){
  skipThis = false;
  for(var i = 0; i < skip.length; i++){
    if(skip[i] === x){
      skipThis = true;
      break;
    }
  }
  if(skipThis){
    continue;
  }
  this.resolveNode("LV" + x).presence = "visible";
}

Also der Code funktioniert nur, wenn ich alle deine "x" zu einem "K" mache (Objekte in meinen Script). Ändern ich wieder alles auf "x", dann passiert nicht.
 
Tut mir leid, ich verstehe immer noch nicht, was du mit diesem "K Objekt" meinst...
Funktioniert es denn dann?
 
Also in meinem Formular gibt es K1 bis K114...dort sind Daten hinterlegt. Diese 114 Objekte sind für alle Abteilungen. Wähle ich jetzt also eine Abteilung aus, werden nur Bestimmte angezeigt also z.B. K1 - 14 und K 90 - 104. Die anderen bleiben ausgeblendet.

Bei dem Code: var start, end, skip, skipThis;

HTML:
//kann angepasst werden:
start = 1; //Start der Schleife bei 1
end = 15; //Ende der Schleife bei 15
skip = [6, 7, 8, 11, 12, 13]; //diese Elemente sollen ausgelassen werden

//ab hier nichts mehr ändern
for(var x = start; x <= end; x++){
  skipThis = false;
  for(var i = 0; i < skip.length; i++){
    if(skip[i] === x){
      skipThis = true;
      break;
    }
  }
  if(skipThis){
    continue;
  }
  this.resolveNode("K" + x).presence = "visible";
}

geht das so nicht. Nur wenn ich die "x" mit "K" ersetzte funktioniert ist.
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben