Форма опроса автоматическая рандомизация слайдера - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь найти способ автоматически рандомизировать положения ползунков (диапазон типов), когда сталкиваюсь с ними на веб-странице (в основном в формах веб-опросов, таких как Qualtrics или Surveymonkey). Я хотел бы добавить эту рандомизацию ползунка к уже существующему автозаполнению, которое я продемонстрировал ниже. Но сначала приведем несколько примеров типа слайдеров, которые я хотел бы автоматизировать (с помощью CSS / HTML):

enter image description here

&

enter image description here

В настоящее время я использую следующий скрипт для случайного автозаполнения форм опроса при загрузке страницы (переключатели, текстовые поля и т. Д.). Я хотел бы добавить рандомизацию ползунков в том же духе к этому сценарию:

// ==/UserScript==

(function() {
        // Save a random number
        var modifier = Math.floor(Math.random() * 9000000);

        // Create a fake user data
        var user = {
            pass : modifier + "",
            mail : modifier + '@Example.com'
        };

        // Array to save data
        var save_data = [];

        // Check window for tags
        function check(win, tagName) {
            try {
                // Get tags
                tagName = win.document.getElementsByTagName(tagName)
            } catch (e) {
                // Not found - Empty array
                tagName = []
            }

            // For each tag
            for (i = 0; i < tagName.length; i++) {

                // This tag
                var tag = tagName[i];

                // Exclude read-only or desabled
                if (tag.readOnly || tag.disabled) continue;

                // Get tag values
                var name = tag.name;
                var type = tag.type;
                var value = tag.value;

                // If Check box
                if ('checkbox' == type){
                    tag.checked = Math.random() > .5;
                }
                // If password
                else if ('password' == type){
                    value = user.pass;
                    // Update tag value
                    tag.value = value;
                }
                // If text
                else if ('text' == type) {
                    // If mail
                    if(name.match(/mail/i)){
                        value = user.mail;
                    }
                    // Update tag value
                    tag.value = value;
                }
                // If radio
                else if ('radio' == type) {
                    // If data don't exist
                    if (!save_data[name]) {
                        save_data[name] = 1;
                    }else{
                        save_data[name] ++;
                    }
                    // Check it with probabilities (depending on the length)
                    tag.checked = Math.random() < (1 / save_data[name]);
                }
                // If select
                else if (type.match(/^select/)){
                    // Set a random options
                    tag.selectedIndex = Math.random() * (tag.options.length - 1) + 1;
                }
            }
            // Try to set focus to the input
            if (tag) try {
                tag.focus()
            } catch (e) {}
        }

        function recursive(win) {
            check(win, 'password');
            check(win, 'select');
            check(win, 'input');

            // For each frame on page
            for (var i = 0; i < win.frames.length; i++) {
                // Check all frames inside
                recursive(win.frames[i])
            }
        }
        recursive(window);
    }());

Поскольку я знаю, что ползунки относятся к диапазону типов ввода, мой добавленный код должен начинаться с чего-то, что выглядит следующим образом:

else if ('range' == type) {

                    if (!save_data[name]) {
                        save_data[name] = 1;
                    }else{
                        save_data[name] ++;
                    }

                    tag.checked = Math.random() < (1 / save_data[name]);
                }

Как вы можете видеть, я основываю этот код на части переключателя скрипта. К сожалению, это, похоже, не работает, и в настоящее время я не могу найти синтаксис, как выбрать новую позицию ползунка или инициировать движение ползунка. Я предполагаю, что это работает иначе, чем активируемый флажок или переключатель. Я знаю, что ползунки имеют диапазоны, которые обычно указываются в CSS / HTML, так что это, очевидно, нужно будет найти. Любая помощь будет абсолютно замечательной. Заранее спасибо.

1 Ответ

0 голосов
/ 18 января 2019

Из w3school :

Изменить значение элемента управления ползунком:

document.getElementById("myRange").value = "75";

Настроить его немного, чтобы сделать его случайным (если ваш диапазон ввода составляет от 0 до 100):

document.getElementById("myRange").value = Math.floor(Math.random() * 100);
...