首页 > 解决方案 > 未捕获的 ReferenceError:_ 未定义在:1:1 (不是 jQuery)

问题描述

.js 文件包括一个字符串数组,当其中一个按钮单击 HTML 页面时,它假设生成随机单词,但由于某种原因,它存在范围变量问题(正如我在其他线程中所理解的那样),但我没有不知道如何直接设置.. 在此处输入图像描述

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>

我还尝试将每个变量放在任何可能的范围组合中,但每次都坚持相同的错误。

标签: javascripthtml

解决方案


setInterval接受函数作为参数。采用

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

并假设您的意思是每秒制作一个新的随机数,请使用

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

剪断:

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>


推荐阅读