Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
154
rated 0 times [  156] [ 2]  / answers: 1 / hits: 12058  / 4 Years ago, sun, february 16, 2020, 12:00:00

.js file including an array of Strings which suppose to generate random words when one of the buttons click on the HTML page but for some reason it has a problem of scoping variables (as much as I've understood in other threads) but I don't know how to set it straight..
enter image description here



var interval;
var randomNum;

function newSubject(str) {

clearInterval(interval);
randomNum = Math.floor(Math.random()*(str.length));
interval = setInterval(document.getElementById('generator').innerHTML = str[randomNum],1000);

}

**var adjectives** = [
'מסוגל',
'מקסים',
'הרפתקני',
'חומצי',
'פעיל',
'מפחד',
'מזדקן',
'אגרסיבי',
'נעים',
'ערמומי',
'מדאיג',
'ערני',
'חי',
'מדהים',
'משועשע',
'עתיק',
'מתבייש',
'מושך',
'ממוצע',
'נורא',
];

var food = [
'אוכל',
'קובנה',
'קוסקוס',
'המבורגר',
'לחם',
'גבינה',
'טבעוני',
'צמחוני',
];

var nature = [
'עץ',
'שדה',
'דשא',
'רוח',
'אדמה',
'מים',
'אש',
];

var space = [
'כדור הארץ',
'אטמוספרה',
'ירח',
'כוכבים',
'חללית',
'חלל חיצון',
'חייזר',
'ונוס',
'שמש',
];

var tech = [
'מכונה',
'בינארי',
'אפס',
'אחד',
'מחשב',
'כוח עיבוד',
];
When buttons

<!DOCTYPE html>
<html lang=en-US>
<head>
<meta charset=utf-8>
<title>Connection Freestyler</title>
<meta name=description content=Hebrew Freestyle Generator />
<meta name=author content=Connection>

<meta name=viewport content=width=device-width, initial-scale=1.0>

<link rel=stylesheet type=text/css href=style.css>
<script type=text/javascript src=words.js></script>

</head>

<body>
<div class=main>
<div class=refresh onclick=>
Refresh Every 5 Secs
</div>

<div class=generator id=generator>
Generator Select Subject
</div>

<div class=subjects>

**<button class=adjectives id=adjectives onclick=newSubject(adjectives)>**
Adjectives
</button>

<button class=food id=food onclick=newSubject(food)>
Food
</button>

<button class=nature id=nature onclick=newSubject(nature)>
Nature
</button>

<button class=space id=space onclick=newSubject(space)>
Space
</button>

<button class=tech onclick=newSubject(tech)>
Tech
</button>
</div>
</div>
</body>
</html>





I've also tried to put every variable in any scope combination possible but it stick to the same error everytime.


More From » html

 Answers
26

setInterval accept function as parameter. use



interval = setInterval(() => document.getElementById('generator').innerHTML = str[randomNum],1000);


and assuming you mean to make a new random every second, use



document.getElementById('generator').innerHTML = str[randomNum];
interval = setInterval(() => newSubject(str),1000);


snipped:





var interval;
var randomNum;

function newSubject(str) {

clearInterval(interval);
randomNum = Math.floor(Math.random()*(str.length));
document.getElementById('generator').innerHTML = str[randomNum];
interval = setInterval(() => newSubject(str),1000);

}

var adjectives = [
'מסוגל',
'מקסים',
'הרפתקני',
'חומצי',
'פעיל',
'מפחד',
'מזדקן',
'אגרסיבי',
'נעים',
'ערמומי',
'מדאיג',
'ערני',
'חי',
'מדהים',
'משועשע',
'עתיק',
'מתבייש',
'מושך',
'ממוצע',
'נורא',
];

var food = [
'אוכל',
'קובנה',
'קוסקוס',
'המבורגר',
'לחם',
'גבינה',
'טבעוני',
'צמחוני',
];

var nature = [
'עץ',
'שדה',
'דשא',
'רוח',
'אדמה',
'מים',
'אש',
];

var space = [
'כדור הארץ',
'אטמוספרה',
'ירח',
'כוכבים',
'חללית',
'חלל חיצון',
'חייזר',
'ונוס',
'שמש',
];

var tech = [
'מכונה',
'בינארי',
'אפס',
'אחד',
'מחשב',
'כוח עיבוד',
];

<body>
<div class=main>
<div class=refresh onclick=>
Refresh Every 5 Secs
</div>

<div class=generator id=generator>
Generator Select Subject
</div>

<div class=subjects>

**<button class=adjectives id=adjectives onclick=newSubject(adjectives)>**
Adjectives
</button>

<button class=food id=food onclick=newSubject(food)>
Food
</button>

<button class=nature id=nature onclick=newSubject(nature)>
Nature
</button>

<button class=space id=space onclick=newSubject(space)>
Space
</button>

<button class=tech onclick=newSubject(tech)>
Tech
</button>
</div>
</div>




[#4728] Thursday, February 13, 2020, 4 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
nestorjarettg

Total Points: 451
Total Questions: 108
Total Answers: 108

Location: Rwanda
Member since Thu, Feb 10, 2022
2 Years ago
nestorjarettg questions
;