您如何将相同的 javascript 代码应用于 Qualtrics 调查中的多个问题?

How do you apply the same javascript code to multiple questions in Qualtrics survey?

我的一个调查问题中有一些 javascript 更改了特定字段的格式。它工作得很好,但我想将相同的代码应用于其他几个问题。显然,我可以简单地复制并粘贴到每个问题上,但是有什么方法可以将代码设置在一个位置以便更易于维护?我查看了许多论坛,但未能找到解决方案。预先感谢您的帮助。

编辑: 这是我想针对多个问题重复的 JavaScript 代码:

{
    /*Place your JavaScript here to run when the page is fully displayed*/
    jQuery("#"+this.questionId+" select option:first-child").text("Select one");    

    jQuery("#"+ this.questionId + " option").each(function () {
            if (jQuery(this).text().includes("\"\"")) {
                jQuery(this).hide();    
            }else{
                title = jQuery(this).text()
                title = title.match(/".*"/)
                if(title != null && title[0].length > 30){
                    newTitle = title[0].match(/^.{30}.*?\s/)[0]
                    if(newTitle != title){
                        newTitle = newTitle + "...\""
                    }
                    text = jQuery(this).text()
                    jQuery(this).text(text.replace(title[0],newTitle))
                }   
            }
    });

});

基本上,每个联系人都预加载了一些嵌入式数据,几个问题涉及一个下拉菜单,允许用户 select 他们的哪些数据元素与项目相关。此代码可确保下拉列表中不会包含空白或缺失的数据,而且如果选项的字符太多,则会被截断。多个问题包括相同的下拉选项,但在其他方面有所不同。

在你的每个问题中添加相同的class(我选择myQuestion class)然后查询它。

遍历每个 select 和 find option:first-child 然后 find option 并遍历它们中的每一个。

$('.myQuestion select').each(function(selectIndex, select){

  // loop through each select
  // for each select find all the options
  
  $(this).find("option:first-child").text("Select one");
  
  $(this).find('option').each(function(optionIndex, option){
    console.log(`select (${selectIndex}) | option (${optionIndex})`);
    
    // your code here
    
  });
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="myQuestion">
  <select>
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </select> 
</div>

<div class="myQuestion">
  <select>
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="mercedes">Mercedes</option>
    <option value="audi">Audi</option>
  </select> 
</div>

使您的代码成为一个函数并将其放入 Qualtrics header。在适用的每个问题中调用函数。

在header中:

<script>
myFunction(qobj) {
   jQuery("#"+qobj.questionId+" select option:first-child")...etc...
}
</script>

那么在你的问题中:

Qualtrics.SurveyEngine.addOnload(function() {
  myFunction(this);
});