You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qualtrics联合实验JS代码报错:Unexpected token )求排查

问题分析与修复方案

错误原因

你遇到的Unexpected token )报错,核心是两个语法问题:

  1. 字符串跨换行未处理:veggieArray里的"Bean sprouts"被拆成两行,JavaScript不允许字符串直接换行(无转义),导致字符串未闭合,触发语法错误。
  2. 循环变量未声明:for循环中的i未用var/let声明,会隐式成为全局变量,虽不直接触发当前报错,但不符合代码规范。

修正后的完整代码

Qualtrics.SurveyEngine.addOnload(function() {
    // 设置选项数量
    var numChoice = 5;
    // 存储所有属性水平的数组
    var breadArray = ["Bagel", "Hero", "Roll", "Sliced white", "Tortilla", "Lettuce wrap"];
    var cheeseArray = ["Cheddar", "Gouda", "Jack", "Mozzarella", "Provolone", "None"];
    var greenArray = ["Arugala", "Green lettuce", "Red lettuce", "Spinach"];
    var meatArray = ["Ham", "Roast beef", "Turkey", "Portobello", "Egg", "Bean patty"];
    var sauceArray = ["Hot sauce", "Mayonnaise", "Mustard", "Oil and vinegar", "None"];
    var veggieArray = ["Tomato", "Jalapenos", "Roasted peppers", "Onion", "Olives", "Bean sprouts", "Pickles", "Avocado"];
    
    // Fisher-Yates 洗牌算法
    function shuffle(array) {
        for (var i = array.length - 1; i > 0; i--) {                  
            var j = Math.floor(Math.random() * (i + 1));    
            var temp = array[i];  
            array[i] = array[j]; 
            array[j] = temp;
        }
        return array;  
    }
    // 洗牌数组并返回第一个元素
    function shuffle_one(theArray) {                               
        var out = shuffle(theArray);
        out = out[0];  
        return out;
    };

    // 执行随机化并保存结果
    for (var i = 1; i <= numChoice; i++) {
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_bread1", shuffle_one(breadArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_bread2", shuffle_one(breadArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_cheese1", shuffle_one(cheeseArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_cheese2", shuffle_one(cheeseArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_green1", shuffle_one(greenArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_green2", shuffle_one(greenArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_meat1", shuffle_one(meatArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_meat2", shuffle_one(meatArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_sauce1", shuffle_one(sauceArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_sauce2", shuffle_one(sauceArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_veggie1", shuffle_one(veggieArray));
        Qualtrics.SurveyEngine.setEmbeddedData("choice" + i + "_veggie2", shuffle_one(veggieArray));
    }      
});

关键修正点

  • 合并veggieArray中拆分的"Bean sprouts"为完整字符串,解决字符串未闭合的核心语法错误。
  • 在for循环中添加var声明变量i,避免全局变量污染。
  • 移除代码中多余的空格,提升可读性,不影响功能。
  • 简化shuffle_one函数的return语句,去掉不必要的括号。

内容的提问来源于stack exchange,提问作者Santiago99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 21:35:42