Как пройти случайный элемент из DropDownList с помощью JavaScript? - PullRequest
0 голосов
/ 30 апреля 2019

Я хочу, чтобы автоматически проходить случайные элементы из DropDownList1.Это работает, но идет по порядку с начала до конца, и я хочу, чтобы элементы выбирались случайным образом.

/* function to automatic select DropDownList1 items */
function selectFromDropdown(selector, text) {
  $(selector).find('option').each(function() {
    if ($(this).text() == text) {
      $(selector).val($(this).val());
      return false;
    }
  })
}

$(document).ready(function() {
  let numberOfTimes = 0;
  const time = 1000 //3s
  let values = [];
  $('#DropDownList1').find('option').each(function() {
    values.push($(this).text())
  });
  console.log(values);
  const interval = setInterval(function() {
      selectFromDropdown('#DropDownList1', values[numberOfTimes])
      if (numberOfTimes == values.length - 1) {
        clearInterval(interval);
      } else {
        numberOfTimes = numberOfTimes + 1;
      }
    },
    time);
});

Вот сниппет: https://jsfiddle.net/lucasangelo_/17Lgr0kc/6/

Ответы [ 2 ]

0 голосов
/ 03 мая 2019

Ответ:

  /* function to automatic select DropDownList1 items */
    function selectFromDropdown(selector, text) {
      $(selector).find('option').each(function() {
        if ($(this).text() == text) {
          $(selector).val($(this).val());
          return false;
        }
      })
    }

    function getRandomNumber(min, max) {
      return (Math.random() * (max - min) + min).toFixed(0);
    }

    $(document).ready(function() {
      let numeroDeVezes = 0;
      const tempoEntreCadaChamada = 1000 //3s
      let valores = [];
      $('#DropDownList1').find('option').each(function() {
        valores.push($(this).text())
      });
      console.log(valores);

      const interval = setInterval(function() {
          const randomNumber = getRandomNumber(0, valores.length - 1);
          const randomItem = valores[randomNumber];
          //console.log(randomItem);
          selectFromDropdown('#DropDownList1', randomItem),
            console.log(`${numeroDeVezes} - Chamou do PostBack para ${randomItem}`);
          //__doPostBack('LButton3', 'OnClick');
          if (numeroDeVezes == valores.length - 1) {
            console.log("Percorreu todos, mata o setInterval");
            clearInterval(interval);
          } else {
            numeroDeVezes = numeroDeVezes + 1;
          }
        },
        tempoEntreCadaChamada);
    });

Спасибо, ребята!

0 голосов
/ 01 мая 2019

Если вы хотите получить случайные значения из select, тогда вы можете использовать следующую функцию:

function getRandomValuesFromSelect(selector, numberOfItemsWanted)
{
    var valuesSelected = [];
    var childrenSelect = document.getElementById(selector).children;

    for (var i = 0; i < numberOfItemsWanted; i++) {
        var randomValue =  Math.floor(Math.random() * childrenSelect.length);
        var randomOption = childrenSelect[randomValue];

        if (valuesSelected.indexOf(randomOption.value) < 0) {
            valuesSelected.push(randomOption.value);
        } else {
            i--;
        }
    }

    return valuesSelected;
}

Тогда вы могли бы назвать это так:

getRandomValuesFromSelect("DropDownList1", 3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...