Reputation: 27
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
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
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
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