-3

I am trying to add a JS code to my Qualtrics for my conjoint experiment but I get this message when trying to save: Invalid JavaScript! You cannot save until you fix all errors: Unexpected token )

I just cannot see any errors. Here's my code:

    Qualtrics.SurveyEngine.addOnload(function()
{
// Set number of choices ;
var numChoice = 5;
// Vectors containing all attribute levels :
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 shuffle :
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 ;  
}
// Shuffle a vector , choose the first entry :  
function shuffle_one ( theArray ){                               
var out = shuffle ( theArray );
var out = out [0];  
return ( out )
};

// Perform the ra nd om iz ati on and save the result :
for (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 )) ;
 }      
});
Santiago99
  • 143
  • 4
  • 2
    Javascript string literals cannot contain span multiple lines. `" Bean⏎ sprouts "` is not valid. I strongly suggest you use a decent editor to write your code and add a linting check to your process – Phil Apr 03 '23 at 00:57
  • 1
    The `--` operator cannot have spaces between the characters either – Phil Apr 03 '23 at 00:59

1 Answers1

0

Just format your code, it seems its due to spaces.

Before:

for ( var i = array . length - 1; i > 0; i - -) {

After:

for ( var i = array . length - 1; i > 0; i--) {

Final Code:

Qualtrics.SurveyEngine.addOnload(function() {
      // Set number of choices ;
      var numChoice = 5;
      // Vectors containing all attribute levels :
      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 shuffle :
        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;
        }
        // Shuffle a vector , choose the first entry :  
        function shuffle_one(theArray) {
          var out = shuffle(theArray);
          var out = out[0];
          return (out)
        };

        // Perform the ra nd om iz ati on and save the result :
        for (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));
        }
      });
Naren Murali
  • 19,250
  • 3
  • 27
  • 54