1

我正在完成一项使用大量 JavaScript 的 Qualtrics 调查的编码。不幸的是,对于我的调查中最重要的问题,当问题不在调查中的首位时,JavaScript 不起作用[编辑:不加载]。然而,我需要先问其他问题,因为这个问题上显示的图表取决于以前的答案。

当问题位于调查中的第一个位置时,看到代码在这里工作非常令人沮丧(即使加载数据需要一些时间 - 约 15 秒,也可以看到 5 个带有蓝色条的图表);但是当我将问题放在第二个位置时,图表不再显示在那里(要查看没有图表,因此必须回答第一个问题并单击下一步按钮)。

仅供参考,我使用 jQuery 和一个绘图库:jChartFX。

有谁知道可能导致这种情况的原因?

[编辑]:这是我的 JavaScript 代码(不包括加载库的标头)。它应该嵌入 HTML 的标题中:

    Qualtrics.SurveyEngine.addOnload(function()
{
        $j(document).ready(function($j){    

            $j.ajax({
                url:'https://login.qualtrics.com/WRQualtricsControlPanel/File.php?F=F_6yFft59YgdvIHfT', 
                success: function(data){
                    var actuelle, rawlsien, utilitarien; 
                    var donnees_rawlsien, donnees_actuelle, donnees_utilitarien;
                    var prefere, egalitaire, actuelle, rawlsien, utilitarien;   
                    var donnees_prefere, donnees_egalitaire; //, donnees_rawlsien, donnees_actuelle, donnees_utilitarien;
                    var donnees = {"utilitarien":donnees_utilitarien,"rawlsien":donnees_rawlsien,"egalitaire":donnees_egalitaire,"actuelle":donnees_actuelle,"prefere":donnees_prefere};
                    prefere = new cfx.Chart();
                    actuelle = new cfx.Chart();
                    egalitaire = new cfx.Chart();
                    rawlsien = new cfx.Chart();
                    utilitarien = new cfx.Chart();
                    donnees_egalitaire = new Array(2);
                    donnees_egalitaire[0] = {x: 0, y: 1800}
                    donnees_egalitaire[1] = {x: 1, y: 1800}
                    donnees_prefere = new Array(2);
                    donnees_prefere[0] = {x: 0, y: 1800}
                    donnees_prefere[1] = {x: 1, y: 1800}
                    var out = charge(data);        
                    donnees_actuelle = out[0];
                    donnees_utilitarien = out[1];
                    donnees_rawlsien = out[2];
                    draw(utilitarien,"utilitarien", donnees_utilitarien);
                    draw(rawlsien,"rawlsien", donnees_rawlsien);
                    draw(actuelle,"actuelle", donnees_actuelle);
                    draw(egalitaire,"egalitaire", donnees_egalitaire);
                    draw(prefere,"prefere", donnees_prefere);   
                },
                error: function(){ 
                    alert('Fail of data loading: utilitarien');
                    donnees_utilitarien = new Array(2);
                    donnees_utilitarien[0] = {x: 0, y: 1800}
                    donnees_utilitarien[1] = {x: 1, revenu: 1800}
                }
            });

            function charge(texte) {
                var dat=texte;
                var tab=dat.split('\n');
                var donnees_actuelle = new Array(100);
                var donnees_utilitarien = new Array(100);
                var donnees_rawlsien = new Array(100);
                for (var i = 0; i<10; i++) {
                    donnees_actuelle[i] = {x:i, y:parseInt(tab[0].split('\t')[0])}
                    donnees_utilitarien[i] =  {x:i, y:parseInt(tab[0].split('\t')[1])}
                    donnees_rawlsien[i] =  {x:i, y:parseInt(tab[0].split('\t')[2])}
                } (...)
                    donnees_actuelle[99] = {x:i, y:parseInt(tab[7].split('\t')[0])}
                    donnees_utilitarien[99] =  {x:i, y:parseInt(tab[7].split('\t')[1])}
                    donnees_rawlsien[99] =  {x:i, y:parseInt(tab[7].split('\t')[2])}
                    var out = new Array(3);
                    out[0] = donnees_actuelle;
                    out[1] = donnees_utilitarien;
                    out[2] = donnees_rawlsien;
                    return out;
            }

            function draw(graph, name, donnees) {   
                graph.setGallery(cfx.Gallery.Bar);

                graph.getAllSeries().setVolume(100);
                var axeY = new cfx.FieldMap();
                axeY.setName("y");
                axeY.setUsage(cfx.FieldUsage.Value);
                graph.getDataSourceSettings().getFields().add(axeY);
                graph.setDataSource(donnees);           
                graph.getAxisY().setMax(12000);
                graph.getAxisX().setVisible(false);
                graph.getAxisY().setStep(1000);
                graph.setBackColor('#00FFFFFF');
                var titreX, titreY;
                titreY = new cfx.TitleDockable();            
                titreY.setText("niveau de vie (€/mois)");
                titreY.setTextColor("#57ACDA");
                graph.getAxisY().setTitle(titreY);
                graph.getLegendBox().setDock(cfx.DockArea.Top);
                graph.getSeries().getItem(0).setText("Niveau de vie des français (en €/mois)");
                graph.getSeries().getItem(0).setColor("#FF0000");
                graph.getLegendBox().setTextColor("#FF0000");
                graph.getLegendBox().setMarginX(250);


                var divHolder = document.getElementById(name);
                graph.create(divHolder);
            }
    });         

});
4

1 回答 1

0

现在,它工作正常,这要归功于 Qualtrics 支持的帮助。但是,我不明白是什么导致了这个问题。它现在似乎起作用了,因为调查是分发的。该错误仅存在于预览模式中。

于 2016-07-29T15:53:44.437 回答