Randomize columns in a multiple response grid [Array (Numbers)]

1 year 7 months ago #200829 by Gustavo_Kremer
Hi, in the attached example, I have a grid/table with brands in its rows and attributes in its columns. Obviously, I can filter which rows are to be shown, and also rows can be shown in randomized order; but additionally, I need to randomize the columns order. Is there a way to do that using Javascript? Many thanks in advance!
The topic has been locked.
1 year 7 months ago - 1 year 7 months ago #200832 by tpartner
This script will randomize the column order in an array-numbers question in LS version 3.x:

<script type="text/javascript" charset="utf-8">	
	$(document).on('ready pjax:scriptcomplete',function(){
	// A function to randomize columns in an array-numbers question
	function randomArrayNumCols(qID){
		var thisQuestion = $('#question'+qID);
		// Index the array columns
		$('table.subquestion-list tr', thisQuestion).each(function(i) {
			$('> *', this).each(function(i) {
				$(this).attr('data-index', i);
		// Create an array of the columns
		var columns = [];
		$('table.subquestion-list tr[id^="javatbd"]:eq(0) td.answer-item', thisQuestion).each(function(i) {
		// Shuffle the columns array
		columns = $.shuffle(columns);
		// Reposition the row elements
		$('table.subquestion-list tr', thisQuestion).each(function(i) {
			var thisRow = $(this);
			$(columns).each(function(i, val) {
				thisRow.append($('[data-index="'+val+'"]', thisRow));
				thisRow.append($('.col-no-answer', thisRow));
	// A function to shuffle elements or contents of arrays
		$.fn.shuffle = function() {
			return this.each(function(){
				var items = $(this).children();
				return (items.length)
					? $(this).html($.shuffle(items))
					: this;
		$.shuffle = function(arr) {
				var j, x, i = arr.length; i;
				j = parseInt(Math.random() * i),
				x = arr[--i], arr[i] = arr[j], arr[j] = x
			return arr;

Here is your sample survey back with that script incorporated:

File Attachment:

File Name: limesurvey...2(2).lss
File Size:21 KB

Tony Partner

Solutions, code and workarounds presented in these forums are given without any warranty, implied or otherwise.
Last edit: 1 year 7 months ago by tpartner.
The following user(s) said Thank You: Gustavo_Kremer
The topic has been locked.
1 year 7 months ago #200838 by Gustavo_Kremer
Excellent!!! Many, many thanks Tony!
The topic has been locked.

Start now!

Just create your account and start using Limesurvey today.

Register now