Qualtrics: динамически установить максимальное значение слайдера при загрузке - PullRequest
0 голосов
/ 01 мая 2018

Я работаю над опросом, который требует установки максимальной дальности Qualtrics HSlider на основе ответа на предыдущий вопрос. Я смог передать результат этого вопроса, чтобы установить текущее значение, но не максимальное.

Я смотрел на другие вопросы о стековом потоке у которых не было решений, поэтому я решил снова задать вопрос, чтобы узнать, решил ли кто-нибудь это недавно. Самое близкое, что я нашел, это этот ответ , где я получаю сообщение об ошибке: «Невозможно установить свойство maxValue из неопределенного». Глядя на другие различные документы, кажется, что основная проблема заключается в том, что существует не один класс слайдера, а набор тегов div, которые составляют слайдер.

Спасибо за любую помощь!

Редактировать: вот код, который я пытался использовать, но я не думаю, что он будет работать из-за отсутствия отдельного объекта слайдера.

Qualtrics.SurveyEngine.addOnload(function()
{
    // Set the slider range
    // First define the function to do it
    setSliderRange = function (theQuestionInfo, maxValue) {
        var postTag = theQuestionInfo.postTag
        var QID=theQuestionInfo.QuestionID
        // QID should be like "QID421"
        // but postTag might be something like "5_QID421" sometimes
        // or, it might not exist, so play around a bit.
        var sliderName='CS_' + postTag
        window[sliderName].maxValue=maxValue
        // now do the ticks. first get the number of ticks by counting the table that contains them
        var numTicks = document.getElementsByClassName('LabelDescriptionsContainer')[0].colSpan
            // do the ticks one at a time
            for (var i=1; i<=numTicks; i++) {
            var tickHeader='header~' + QID + '~G' + i
            // the first item of the table contains the minimum value, and also the first tick.
            // so we do some tricks to separate them out in that case.
            var tickSpanArray = $(tickHeader).down("span.TickContainer").children
            var tickSpanArrayLength=tickSpanArray.length
            var lastTickIndex=tickSpanArrayLength - 1
            var currentTickValue = tickSpanArray[lastTickIndex].innerHTML
            currentTickValue=currentTickValue.replace(/^\s+|\s+$/g,'')
            console.log('Tick value ' + i + ' is ' + currentTickValue)
            // now get the new value for the tick
            console.log('maxValue: ' + maxValue + ' numTicks: ' + numTicks + ' i: ' + i)
            var newTickValue = maxValue * i / numTicks //the total number of ticks
            tickSpanArray[lastTickIndex].innerHTML=newTickValue.toString()
            console.log('Changed tick value to ' + newTickValue)
        }
    }
    console.log(this.getQuestionInfo());
    var currentQuestionInfo = this.getQuestionInfo();
    var currentQuestionID = currentQuestionInfo.QuestionID;
    var Q8Response = parseInt("${q://QID8/ChoiceTextEntryValue}");
    // Now call the function
    setSliderRange(currentQuestionInfo, Q8Response)

});

Qualtrics.SurveyEngine.addOnReady(function()
{
    /*Place your JavaScript here to run when the page is fully displayed*/

});

Qualtrics.SurveyEngine.addOnUnload(function()
{
    /*Place your JavaScript here to run when the page is unloaded*/

});
...