Hanuman
Hanuman

Reputation: 27

Incremental value from random number

I have this javascript.

$(function () {

    $("#generate").click(function () {
        $("#number1").val(generateNumb);
        #$("#number2");
        #$("#number3");
        #$("#number4");
    });

});

function generateNumb() {
    return "000000" + random(10, 16777215).toString(16).toUpperCase();
}

function random(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

And this html:

<body>

    <h1>Number Generator</h1 >

    <div>    
        <input id="generate" type=button value="Generate" /><br/><br/>
    Number<br/>
        <input id="number1" placeholder="Number 1" /><br/>
        <input id="number2" placeholder="Number 2" /><br/>
        <input id="number3" placeholder="Number 3" /><br/>
        <input id="number4" placeholder="Number 4" /><br/>
    </div>

</body>

I would like to add to the script '#number2', '#number3' and #number4 where their respective values are an increment from the previous generated value , meaning where:

How can this be done?

Thank you in advance.

Upvotes: 0

Views: 594

Answers (3)

Krzysztof Safjanowski
Krzysztof Safjanowski

Reputation: 7438

The almost final solution can be implemented as:

$(function() {

  $("#generate").click(function() {
    var increaseBy = increaseBase(generateNumb());

    $("#number1").val(increaseBy(0));
    $("#number2").val(increaseBy(1));
    $("#number3").val(increaseBy(2));
    $("#number4").val(increaseBy(3));
  });

});

function increaseBase(base) {
  return function(value) {
    return "000000" + (base + value).toString(16).toUpperCase()
  }
}

function generateNumb() {
  return random(10, 16777215);
}

function random(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Number Generator</h1>

<div>
  <input id="generate" type=button value="Generate" /><br/><br/> Number
  <br/>
  <input id="number1" placeholder="Number 1" /><br/>
  <input id="number2" placeholder="Number 2" /><br/>
  <input id="number3" placeholder="Number 3" /><br/>
  <input id="number4" placeholder="Number 4" /><br/>
</div>

Upvotes: 1

Faust
Faust

Reputation: 57

Personally I'd just make smaller portions of code:

//create your number
function generateNumb() {
  return random(10, 16777215)
}
//call this to output your number in your forms
function toHex(num) {
  return "000000" + num.toString(16).toUpperCase();
}

function random(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

You'd then call the values by calling:

first = generateNumb();
second = first + parseInt("02", 16);

Then output the values by calling toHex(first) Alternatively you can do it at once:

firstHex = toHex(generateNumb);
secondHex = toHex(generateNumb+parseInt("02",16));

Demo: Fiddle

Upvotes: 1

Maxime Chevallier
Maxime Chevallier

Reputation: 307

You can try :

var numberOfInputs = 4;
var inputs = []
for(n in numberOfInputs) {
    inputs.push($(`#number${n}`)) // We had HTML nodes in a table
inputs[0].val(generateNumb())
for(i=1;i<inputs.length;i++) {
    inputs[i] = inputs[i-1].val() + "0x02"

Upvotes: 1

Related Questions