Witam,
pisząc program do losowania liczby, która nie może się powtarzać za jednym jego działaniem (losowana liczba nie może być powtórzona z poprzednimi), natknąłem się na problem. Mianowicie zdefiniowałem zmienną poza jakąkolwiek funkcją, a następnie chciałem się do niej odwołać przez funkcję właśnie, ale wyskoczył błąd:
Uncaught ReferenceError: numbers is not defined
at isInArray (index.html:34)
at randomize (index.html:45)
at index.html:27
Kod umieszczony na pastebin'ie pod linkiem (klik), lub w kodzie:
<!DOCTYPE html>
<html>
<head>
<title>Jakiśtam tytuł</title>
<meta charset="utf-8" />
<!-- Import CSS -->
<link rel="stylesheet" type="text/css" href="style.css" media="all" />
<!-- device-width -->
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Import FONTS -->
<link href="https://fonts.googleapis.com/css?family=Markazi+Text|Roboto:400,900" rel="stylesheet">
</head>
<body>
<div class="centered">
<p class="number">0</p>
<h1>Wylosuj numerek</h1>
<p class="warning">Uwaga! Wartości z pól są uważane za maksymalne w każdą stronę. Oznacza to, że po wybraniu przedziału od 1 do 20 mogą zostać wylosowane liczby 1, 2, .. , 19, 20</p>
<label for="number-min">Od</label><br />
<input type="number" id="number-min" /><br />
<label for="number-max">Do</label>
<br /><input type="number" id="number-max" />
</div>
<script>
for(var i = 0; i < 30; i++) {
document.write(randomize(1, 20) + ', ');
}
let numbers = new Array(1, 2);
var rndm;
function isInArray(val) {
for(var i = 0; i < numbers.length; i++) {
if(numbers[i] == val) {
return true;
}
}
return false;
}
function randomize(min, max) {
do {
rndm = Math.floor(Math.random() * (max - min + 1)) + min;
} while(isInArray(rndm) == true);
numbers.push(rndm);
return rndm;
}
</script>
</body>
</html>