Welcome to the LimeSurvey Community Forum

Ask the community, share ideas, and connect with other LimeSurvey users!

LimeSurvey JavaScript-Fehler "Unexpected token"

  • Vince2373
  • Vince2373's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 months 3 hours ago #265284 by Vince2373
Bitte helfen Sie uns, Ihnen zu helfen und füllen Sie folgende Felder aus:
Ihre LimeSurvey-Version: 6.5.11
Eigener Server oder LimeSurvey-Cloud: LimeSurvey-Cloud
Genutzte Designvorlage: fruity
==================
Hallo liebes Forum, 

zuerst möchte ich einmal allen hier danken! Ich benutze LimeSurvey nun schon einige Zeit und die Beiträge hier haben mir in der Vergangenheit schon sehr weitergeholfen. Nun habe ich jedoch selbst ein Problem, dass ich nicht lösen kann. 

Ich möchte gerne eine Umfrage im Sinne des AHP durchführen. Hierzu gibt es bereits einen Beitrag im Forum, in dem eigentlich genau das, was ich möchte, mittels JavaScript umgesetzt wurde ( [url] forums.limesurvey.org/forum/german-forum...ration-schieberegler [/url] ).
Egal wie und wo ich diese beiden Teile des Skripts jedoch einfüge, erhalte ich Fehlermeldungen. Zuerst habe ich wie im Hilfedokument beschrieben "Filtere HMTL auf XSS:" auf aus gestellt, dann habe ich beide Teile des Skriptes untereinander kopiert und in den eigentlichen Fragentext (Reiter "Frage" beim Bearbeiten einer Frage) eingefügt. Hierbei erscheint jedoch einfach eine leere Frage. Anschließend habe ich das Skript im Reiter "Skript" eingefügt. Hierbei erscheinen jedoch rote Kästchen mit der Meldung "Expected an identifier, but instead saw '<'" sowie "Missing ";" before statement" in der ersten Zeile des Skripts sowie "Unclosed regular expression" in der Zeile, in der der erste Teil mit <\script> geschlossen wird. 

Ich weiß leider aktuell nicht weiter und würde mich sehr über Hilfe freuen! Die betreffende Frage habe ich angehängt.
Vielen Dank und viele Grüße

Vincent

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 months 2 hours ago #265287 by Joffm
Hallo,
erster Fehler: Wie unter dem "Script"-Feld angegeben wird
Dieses optionale Skriptfeld wird umschlossen, sodass das Skript nach der Anzeige der Frage korrekt ausgeführt wird.
wird hier das script nicht mehr mit den tags umschlossen.
Daher ist die Meldung auch verständlich
"Expected an identifier, but instead saw '<'"
Da kommt am Anfang das "<" von "<script>"; und das hat dort nichts verloren.

Persönlich halte ich diesen Tab für Blödsinn, da Du zwar das script hineinbekommst, aber mit css dann wieder Probleme bekommst.
Daher: Für mich gibt es diesen Tab nicht.
Daher mein Ratschlag: Füge es (mit tags) in den Fragetext ein.

Zweiter Fehler: Die Frage ist vom Typ "Matrix"!!!!
Wie soll da ein Slider dargestellt werden?
Es muss "mehrfache numerische Eingabe" sein.
Dann klappt es auch.
Dann noch ein bisschen "Schönheit"



 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Vince2373

Please Log in to join the conversation.

  • Vince2373
  • Vince2373's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
6 months 1 hour ago #265291 by Vince2373
Replied by Vince2373 on topic LimeSurvey JavaScript-Fehler "Unexpected token"
Hey,

vielen lieben Dank für die Antwort! Das es einen Fragentyp mit Slider gibt, habe ich tatsächlich einfach übersehen...

Der Code funktioniert, im Gegensatz zu den Ergebnissen im anderen Thread steht bei mir der Text, der links und rechts des Sliders sein sollte, jetzt allerdings unter dem Slider. Zusätzlich wird bei mir immer noch der "eigentliche Zahlenwert (also von 1 bis 17, nicht wie im Slider von 9 - 1 - 9) angezeigt, trotz ".slider .tooltip {display:none; }". Ich habe schon versucht, im Skript Variablen zu ändern, kenne mich aber leider mit JavaScript so gar nicht aus...

Vielen Dank schon einmal!

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
6 months 54 minutes ago #265294 by Joffm
Hast Du einmal mein "Tutorial 2: Mehrfachnennungen, ..." angesehen. 
Dort wird dies im Kapitel 4 gezeigt.

Und generell denke ich, dass das css für Version 6 angepasst werden muss. Aber das muss es ja eigentlich sowieso; jeder hat andere Vorstellungen das Aussehen betreffend.

Ich werde später den Export anschauen.

Joffm 

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 months 4 weeks ago #265303 by Joffm
Hallo,
1.

der links und rechts des Sliders sein sollte, jetzt allerdings unter dem Slider.

Der Thread (und auch die screenshots im Tutorial) stammen aus der Version 3.x.
In Version 6.x. ist die default-Anzeige eben so
 

2.

Zusätzlich wird bei mir immer noch der "eigentliche Zahlenwert (also von 1 bis 17, nicht wie im Slider von 9 - 1 - 9) angezeigt, trotz ".slider .tooltip {display:none; }".


Du meinst, dass der ursprüngliche Tooltip noch angezeigt wird?
Einfach ein "!important" hinzufügen.
.tooltip { display:none !important; }

Noch einmal die Breiten und Texte angepasst
 

3. Gut, so wie es jetzt aussieht, ist es nicht besonders schön mit den Endpunkttexten so mitten im Gelände.
Du könntest jetzt
  • die Skala weglassen; die oberen Texte sind ja aussagekräftig genug
     
  • die Skala ebenfalls nach oben setzen (dabei auch die Endpunkttexte mehr hervorheben)
     
  • die Skala weglassen, stattdessen die Tooltips anpassen (s. Kap. 4.2. des Tutorials)
     

Okay,
das ist ja immer nur das Beispiel aus dem Forum, also nicht Dein echtes.
Vielleicht willst Du dies ja gar nicht, sondern einen "stinknormalen" Slider.
Da Du ja nicht wusstest, dass es so etwas gibt. (Das Handbuch sollte man schon einmal quergelesen haben, gerade, was die Fragetypen angeht)
Also, zeige einmal, wie die Frage wirklich sein soll.

Bis dann
Joffm
 

Volunteers are not paid.
Not because they are worthless, but because they are priceless
The following user(s) said Thank You: Vince2373

Please Log in to join the conversation.

  • Vince2373
  • Vince2373's Avatar Topic Author
  • Offline
  • New Member
  • New Member
More
5 months 4 weeks ago #265310 by Vince2373
Replied by Vince2373 on topic LimeSurvey JavaScript-Fehler "Unexpected token"
Hallo, 

Vielen Dank für die schnellen Antworten, das mit dem Tooltip hat jetzt funktioniert! Die Beispieldateien waren genau meine Frage, da ich es gerne genau so wie im Beispiel gehabt hätte. Das geht ja aber leider nicht, wie Du festgestellt hast. Ich habe in der Zwischenzeit ein bisschen mit den Werten herumgespielt und habe eine für mich passende Lösung gefunden (s. Screenshot). Ich werde wahrscheinlich noch versuchen, den Text unter der Skala etwas größer zu bekommen sowie den Text links daneben höher zu setzen. Ich füge noch den genutzten Code mit an, falls andere Leser ebenfalls nach einer solchen Lösung suchen.

Vielen Dank und einen schönen Abend noch!

Vincent

Code:
<script type="text/javascript" charset="utf-8">
    $(document).on('ready pjax:scriptcomplete',function(){
 
        var ticksArray = [
            [1, ''],
            [2, ''],
            [3, ''],
            [4, ''],
            [5, ''],
            [6, ''],
            [7, ''],
            [8, ''],
            [9, ''],
            [10, ''],
            [11, ''],
            [12, ''],
            [13, ''],
            [14, ''],
            [15, ''],
            [16, ''],
            [17, ''],
        ];
        var ticksArray2 = [
            [1, '<span style="color:blue">extrem wichtiger</span>'],
            [2, ''],
            [3, '<span style="color:blue">sehr viel wichtiger</span>'],
            [4, ''],
            [5, '<span style="color:blue">viel <br> wichtiger</span>'],
            [6, ''],
            [7, '<span style="color:blue">etwas <br> wichtiger</span>'],
            [8, ''],
            [9, '<span style="color:black">gleich <br> wichtig</span>'],
            [10, ''],
            [11, '<span style="color:red">etwas <br> wichtiger</span>'],
            [12, ''],
            [13, '<span style="color:red">viel <br> wichtiger</span>'],
            [14, ''],
            [15, '<span style="color:red">sehr viel wichtiger</span>'],
            [16, ''],
            [17, '<span style="color:red">extrem wichtiger</span>'],
        ];
 
        insertSliderTicks('{QID}', ticksArray);
        insertSliderTicks2('{QID}', ticksArray2);
    });
 
    /* Insert Slider Tick Marks */
    function insertSliderTicks(qID, ticksArray) {
        var thisQuestion = $('#question'+qID);
 
        $(thisQuestion).addClass('with-inserted-ticks');
 
        $('input:text', thisQuestion).on('slideEnabled',function(){ 
            var thisSlider = $(this);
            var thisItem = $(thisSlider).closest('li');
            var thisMin = $('.slider-handle:eq(0)', thisItem).attr('aria-valuemin');
            var thisMax = $('.slider-handle:eq(0)', thisItem).attr('aria-valuemax');
            var thisRange = thisMax - thisMin;
            $.each(ticksArray, function(i, val) {
                var tickRelativePosition = val[0] - thisMin;
                var tickPercent = (tickRelativePosition/thisRange)*100;
 
                // Insert tick marks
                $('.slider-handle:eq(0)', thisItem).before('<div class="inserted-tick left-'+tickPercent+'" style="left: '+tickPercent+'%">\
                                                    <div class="tick-text">'+val[1]+'</div>\
                                                </div>');
            });    
        });
    }
    /* Insert Slider Tick Marks */
    function insertSliderTicks2(qID, ticksArray2) {
        var thisQuestion = $('#question'+qID);
 
        $(thisQuestion).addClass('with-inserted-ticks');
 
        $('input:text', thisQuestion).on('slideEnabled',function(){ 
            var thisSlider = $(this);
            var thisItem = $(thisSlider).closest('li');
            var thisMin = $('.slider-handle:eq(0)', thisItem).attr('aria-valuemin');
            var thisMax = $('.slider-handle:eq(0)', thisItem).attr('aria-valuemax');
            var thisRange = thisMax - thisMin;
            $.each(ticksArray2, function(i, val) {
                var tickRelativePosition = val[0] - thisMin;
                var tickPercent = (tickRelativePosition/thisRange)*100;
 
                // Insert tick marks
                $('.slider-handle:eq(0)', thisItem).before('<div class="inserted-tick2 left-'+tickPercent+'" style="left: '+tickPercent+'%">\
                                                    <div class="tick-text">'+val[1]+'</div>\
                                                </div>');
            });    
        });
    }
</script>
<style type="text/css">/* Slider Tick Marks */
 
    @media only screen and (min-width: 768px) {
 
        .with-inserted-ticks .slider-container {
            padding-right: 30px;
            padding-left: 30px;
        }
    }
 
    .with-inserted-ticks .slider-item {
        margin-bottom: 100px;
          margin-top: 100px;
    }
 
    .with-inserted-ticks .slider-container .help-block {
        margin: 25px 0 0 -20px;
        width: 40px;
        text-align: center;
    }
 
    .with-inserted-ticks .slider-container .help-block.pull-right {
        margin: 25px -20px 0 0;
    }
 
    .inserted-tick, .inserted-tick2 {
        position: absolute;
        top: 50%;
        height: 20px;
        width: 4px;
        margin-top: -25px;
        margin-left: -1px;
        background-color: #DDDDDD; 
        background-color: black; 
    }
 
    .inserted-tick2.left-0,
    .inserted-tick2.left-100,
    .inserted-tick.left-0,
    .inserted-tick.left-100 {
        background-color: transparent;
        background-color: black; 
    }
 
    .inserted-tick2 .tick-text {
        position: absolute;
        top: -250%;
        width: 100px;
        margin-left: -50px;
        color: #000000;
        text-align: center; 
    }
    .inserted-tick .tick-text {
        position: absolute;
        top: 150%;
        width: 100px;
        margin-left: -50px;
        color: #000000;
        text-align: center; 
    }
 
    @media only screen and (max-width: 768px) {
     .slider-list .slider-left, .slider-list .slider-right {
        margin-top: 0em;
  }
}
        .inserted-tick.left-0 .tick-text {
            margin-left: 0px;
            text-align: left; 
        }
 
        .inserted-tick.left-100 .tick-text {
            margin-left: -100px;
            text-align: right; 
        }
 
    }
.slider .tooltip { display:none !important; }
  .tooltip { display:none !important; }
.slider-selection { display:none !important; }
</style>

Please Log in to join the conversation.

  • Joffm
  • Joffm's Avatar
  • Away
  • LimeSurvey Community Team
  • LimeSurvey Community Team
More
5 months 4 weeks ago #265325 by Joffm
Gut, das funktioniert natürlich.
Doch, wenn Du das ticksArray gar nicht benutzen willst, solltest Du dies auch aus dem script entfernen.
Dann ist dies doch überflüssig
Code:
        var ticksArray = [
            [1, ''],
            [2, ''],
...
Code:
insertSliderTicks('{QID}', ticksArray);
Code:
  /* Insert Slider Tick Marks */
    function insertSliderTicks(qID, ticksArray) {
        var thisQuestion = $('#question'+qID);
 
        $(thisQuestion).addClass('with-inserted-ticks');
 
        $('input:text', thisQuestion).on('slideEnabled',function(){ 
            var thisSlider = $(this);
            var thisItem = $(thisSlider).closest('li');
            var thisMin = $('.slider-handle:eq(0)', thisItem).attr('aria-valuemin');
            var thisMax = $('.slider-handle:eq(0)', thisItem).attr('aria-valuemax');
            var thisRange = thisMax - thisMin;
            $.[url=https://www.php.net/each]each[/url](ticksArray, function(i, val) {
                var tickRelativePosition = val[0] - thisMin;
                var tickPercent = (tickRelativePosition/thisRange)*100; 
 
                // Insert tick marks
                $('.slider-handle:eq(0)', thisItem).before('<div class="inserted-tick left-'+tickPercent+'" style="left: '+tickPercent+'%">\
                                                    <div class="tick-text">'+val[1]+'</div>\
                                                </div>');
            });    
        });
    }

Kannst Du dann auch aus dem css löschen.

Vielleicht sollten die Skalenendtexte ein bisschen präsenter sein im Vergleich zum Teilfragentext.
Und den Teilfgragentext ein wenig höher.
Kleines Beispiel
 
Linksbündiger Teilfragentext und Höherstellung mit
Code:
 .slider-list.form-horizontal .control-label {
    text-align: left !important;
  }
 
 .slider-list.form-horizontal .control-label {
    text-align: left !important;
    margin-top: -30px !important;
  }

Aber das ist natürlich Dir überlassen.

Joffm

Volunteers are not paid.
Not because they are worthless, but because they are priceless

Please Log in to join the conversation.

Moderators: holchJoffmtpartner

Lime-years ahead

Online-surveys for every purse and purpose