2

I am looking to generate x number of unique numbers between 1-10 ( whatever the user types in a input box) . So far I can generate x number of the same unique number. It needs to have an input.

function addFields(){
            var number = document.getElementById("member").value;
            var container = document.getElementById("container");


    var arr = Math.floor((Math.random() * 10) + 1);

            while (container.hasChildNodes()) {
                container.removeChild(container.lastChild);
            }
            for (i=0;i<number;i++){
                container.appendChild(document.createTextNode(" " + (arr)));
                var input = document.createElement("input");
                input.type = "number";
                                                                                                                          container.appendChild(document.createElement("br"));

            }
        }

https://jsfiddle.net/andrew1814/by62764z/1/

Thanks for your help!

Andrewp
  • 25
  • 3

2 Answers2

5

You want to generate everytime a random number so you can move arr variable inside the iterator:

function addFields() {
  var number = document.getElementById("member").value;
  var container = document.getElementById("container");

  while (container.hasChildNodes()) {
    container.removeChild(container.lastChild);
  }
  for (i = 0; i < number; i++) {
    //move arr here
    var arr = Math.floor((Math.random() * 10) + 1);
    container.appendChild(document.createTextNode(" " + (arr)));
    var input = document.createElement("input");
    input.type = "number";
    container.appendChild(document.createElement("br"));

  }
}
<input type="text" id="member" name="member" value="">Number of members: (max. 10)
<br />
<a href="#" id="filldetails" onclick="addFields()">See Numbers</a>

<div id="container" /></div>
Alex Char
  • 32,879
  • 9
  • 49
  • 70
0

Here is a function that will generate an array of x unique numbers 1-10:

function generateUnique (x) {
  var numbers = [];

  while(x > 0) {
    var r = Math.floor((Math.random() * 10) + 1);
    if(numbers.indexOf(r) === -1) {
      numbers.push(r);
      x--;
    }
  }
  return numbers;
}

alert(generateUnique(5));
Marko Gresak
  • 7,950
  • 5
  • 40
  • 46