> die blöde Frage zuerst: wo genau wird new Dynamic Filter eingeführt?
Technisch haben Sie diese Funktion/Klasse programmiert, als Sie function DynamicFilter() in den JavaScript-Code geschrieben haben :)
Inhaltlich erklärt wird es in der Anleitung (
https://www.soscisurvey.de/help/doku.php/de:create:dynamic#beispiel_1bmehrere_gleichartige_fragen) ich vermute, dort hatten Sie den JavaScript-Code auch entnommen.
> Dann habe ich mich gefragt, warum die Filterfrage, die aus drei Unterfragen besteht (belastet-beunruhigt-freut mich) nicht als eine einzige Frage auftaucht (und nur eine ID bekommt), sondern eben aus diesen drei Einzelfragen (mit jeweils einer eigenen ID) besteht...
DV01_qst sollte da als Kennung, die Sie ein/ausblenden vollkommen reichen. Die einzelnen Optionen müssen Sie nur für die Filterfrage (also nicht für die gefilterte Frage) angeben, weil Sie da die Auswahlfelder einzeln brauchen. Allerdings ist das JavaScript-Beispiel in der Anleitung so ausgelegt, dass Sie alle Eingabefelder anhand der Frage-ID definieren. Denn Sie haben ja nicht nur eine Filterfrage+Frage auf der Seite, sondern viele davon.
> Und dann frage ich mich, ob da die addevent-Funktion noch fehlt, damit die Zusatzfrage bei entsprechender Antwort eingeblendet werden kann.
Das SoSciTools.attachEvent() - Sie könnten mit einer anderen Syntax auch den addEventListener() verwenden - haben Sie in der DynamicFilter()-Funktion bereits.
Jetzt haben Sie übrigens geschrieben:
function New DynamicFilter (DS01_qst, DV01_qst) {
Das ist noch nicht ganz richtig. Entfernen Sie das "New" hier wieder, denn hier sind wir erst bei der Definition der Funktion/Klasse:
function DynamicFilter (FilterID, FrageID) {
Und unter dieser Definition - also wenn die letzte geschweifte Klammer wieder geschlossen wird - dort setzen Sie dann einen Aufruf ein:
new DynamicFilter("DS01", "DV01");
Sie sehen: Da übergeben Sie dann die Kennungen von Filter-Fragen und der Frage, die gefiltert werden soll. Und diese Zeile wiederholen Sie dann für alle Pärchen:
new DynamicFilter("NS35", "DV04");
new DynamicFilter("DS32", "DV05");
...
Dann müssen Sie also nicht alles kopieren, sondern Sie rufen denselben Code mit unterschiedlichen Parametern auf. Das "DS32" wird dann in der Klasse zur Variable FilterID, die Sie dann wiederum verwenden, um die Kennungen für die Optionen zu definieren.
var optionA = document.getElementById(FilterID + "_011");
var optionB = document.getElementById(FilterID + "_012");