Hello,
I want to do an experiment where the participants see althoghter 8 persons (there are pairs and only one of them is shown) with some characteristics. I want to introduce a timer so that every profile is shown for 6 sec. Before I introduced the timer the survey was working but now not all of the 8 selected participants are shown and sometimes the timer is missing. Do anyone know a mistake? That is my code in the beginning:
var maleNames = ["Alexander", "Daniel", "Michael", "Christopher", "Samuel", "Adrian", "Timo", "Julian"];
var femaleNames = ["Alexandra", "Danielle", "Michaela", "Christina", "Samantha", "Adriana", "Tina", "Julia"];
// Function to randomly select unique numbers between 0 and 7 (inclusive)
function getRandomIndices() {
var indices = [];
while (indices.length < 4) {
var rand = Math.floor(Math.random() * 8);
if (!indices.includes(rand)) {
indices.push(rand);
}
}
return indices;
}
// Get 4 random indices representing selected male names
var selectedIndices = getRandomIndices();
// Create the final list of names by selecting the male or female from each pair
var names = [];
var orderedNames = [];
for (let i = 0; i < 8; i++) {
if (selectedIndices.includes(i)) {
names.push(maleNames[i]); // Add male name if index is selected
orderedNames.push(maleNames[i]); // Store original order as well
} else {
names.push(femaleNames[i]); // Add female name if index is not selected
orderedNames.push(femaleNames[i]); // Store original order as well
}
}
// Shuffle the final list to randomize the order of male and female names
function shuffle(array) {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[array[i], array[j]] = [array[j], array[i]];
}
return array;
}
names = shuffle(names);
// Set a random name for the question
var randomIndex = Math.floor(Math.random() * names.length);
var randomName = names[randomIndex]; // Declare randomName here
// Store the selected random name as an embedded variable
Qualtrics.SurveyEngine.setEmbeddedData('randomName', randomName);
// Store the selected indices as a string to set as an embedded variable
var selectedIndicesString = selectedIndices.join(", ");
Qualtrics.SurveyEngine.setEmbeddedData('selectedIndices', selectedIndicesString);
// Store the ordered names as a string to set as an embedded variable (no shuffle)
var orderedNamesString = orderedNames.join(", ");
Qualtrics.SurveyEngine.setEmbeddedData('OrderedNames', orderedNamesString);
// Set the orderedName1 to orderedName8 embedded variables (without shuffle)
for (let i = 0; i < 8; i++) {
Qualtrics.SurveyEngine.setEmbeddedData('orderedName' + (i + 1), orderedNames[i]);
console.log('orderedName' + (i + 1) + ': ' + orderedNames[i]);
}
// Set the embedded variables for name1 to name8 (shuffled)
for (let i = 0; i < 8; i++) {
Qualtrics.SurveyEngine.setEmbeddedData('name' + (i + 1), names[i]);
console.log('name' + (i + 1) + ': ' + names[i]);
}
// Create a dropdown list for the question using the displayed names only
Qualtrics.SurveyEngine.addOnload(function () {
var dropdownQuestion = this.getQuestionContainer().querySelector('select');
if (dropdownQuestion) {
// Clear the current options
dropdownQuestion.innerHTML = '';
// Create an option for each displayed name (name1 to name8)
for (var i = 1; i <= 8; i++) {
var name = "${e://Field/name" + i + "}"; // Access embedded variable for name
var option = document.createElement('option');
option.value = name;
option.text = name;
dropdownQuestion.add(option);
console.log('Adding to dropdown: ' + name); // Debugging
}
}
});
// Interests section: list of 16 interests
var interestsArray = [
"Competitive sports",
"Empathy",
"Logic",
"Yoga",
"Competitiveness",
"Aesthetics",
"Hiking",
"Baking",
"Quiet",
"Non-Fiction Books",
"Entrepreneurship",
"Communication",
"Stocks",
"Ballet",
"Cooking",
"Adventure"
];
// Set an embedded variable for each individual interest
Qualtrics.SurveyEngine.setEmbeddedData('Interest1', interestsArray[0]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest2', interestsArray[1]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest3', interestsArray[2]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest4', interestsArray[3]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest5', interestsArray[4]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest6', interestsArray[5]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest7', interestsArray[6]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest8', interestsArray[7]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest9', interestsArray[8]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest10', interestsArray[9]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest11', interestsArray[10]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest12', interestsArray[11]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest13', interestsArray[12]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest14', interestsArray[13]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest15', interestsArray[14]);
Qualtrics.SurveyEngine.setEmbeddedData('Interest16', interestsArray[15]);
// Function to select 3 unique random interests from interestsArray
function getThreeUniqueRandomInterests(array) {
let interestsCopy = [...array]; // Create a copy of the array to ensure we can remove items
let selectedInterests = [];
for (let i = 0; i < 3; i++) {
let randomIndex = Math.floor(Math.random() * interestsCopy.length);
selectedInterests.push(interestsCopy[randomIndex]);
interestsCopy.splice(randomIndex, 1); // Remove the selected interest to prevent duplicates
}
return selectedInterests;
}
// Get 3 random unique interests
var randomInterests = getThreeUniqueRandomInterests(interestsArray);
// Store the selected random interests as embedded variables
for (let i = 0; i < 3; i++) {
Qualtrics.SurveyEngine.setEmbeddedData('RandomInterest' + (i + 1), randomInterests[i]);
}
// Store each individual interest as an embedded variable
for (let i = 0; i < interestsArray.length; i++) {
Qualtrics.SurveyEngine.setEmbeddedData('Interest' + (i + 1), interestsArray[i]);
}
// Store the full list of interests as a single embedded variable (array format)
Qualtrics.SurveyEngine.setEmbeddedData('AllInterests', interestsArray.join(", "));
// Store the selected indices as a string to set as an embedded variable
var selectedIndicesString = selectedIndices.join(", ");
Qualtrics.SurveyEngine.setEmbeddedData('selectedIndices', selectedIndicesString);
// Store the ordered names as a string to set as an embedded variable (no shuffle)
var orderedNamesString = orderedNames.join(", ");
Qualtrics.SurveyEngine.setEmbeddedData('OrderedNames', orderedNamesString);
// Set the orderedName1 to orderedName8 embedded variables (without shuffle)
Qualtrics.SurveyEngine.setEmbeddedData('orderedName1', orderedNames[0]);
Qualtrics.SurveyEngine.setEmbeddedData('orderedName2', orderedNames[1]);
Qualtrics.SurveyEngine.setEmbeddedData('orderedName3', orderedNames[2]);
Qualtrics.SurveyEngine.setEmbeddedData('orderedName4', orderedNames[3]);
Qualtrics.SurveyEngine.setEmbeddedData('orderedName5', orderedNames[4]);
Qualtrics.SurveyEngine.setEmbeddedData('orderedName6', orderedNames[5]);
Qualtrics.SurveyEngine.setEmbeddedData('orderedName7', orderedNames[6]);
Qualtrics.SurveyEngine.setEmbeddedData('orderedName8', orderedNames[7]);
// Set the embedded variables for name1 to name8 (shuffled)
Qualtrics.SurveyEngine.setEmbeddedData('name1', names[0]);
Qualtrics.SurveyEngine.setEmbeddedData('name2', names[1]);
Qualtrics.SurveyEngine.setEmbeddedData('name3', names[2]);
Qualtrics.SurveyEngine.setEmbeddedData('name4', names[3]);
Qualtrics.SurveyEngine.setEmbeddedData('name5', names[4]);
Qualtrics.SurveyEngine.setEmbeddedData('name6', names[5]);
Qualtrics.SurveyEngine.setEmbeddedData('name7', names[6]);
Qualtrics.SurveyEngine.setEmbeddedData('name8', names[7]);