Javascript错误:未捕获引用错误:[函数]未定义
我有两个js文件,都由一个HTML文件调用Javascript错误:未捕获引用错误:[函数]未定义,javascript,Javascript,我有两个js文件,都由一个HTML文件调用 <script type="text/javascript" src="scripts/levelmovement.js"></script> <script type="text/javascript" src="scripts/generation.js"></script> 整个generation.js: var generatedtop; var howtogentop = 'gen'; va
<script type="text/javascript" src="scripts/levelmovement.js"></script>
<script type="text/javascript" src="scripts/generation.js"></script>
整个generation.js:
var generatedtop;
var howtogentop = 'gen';
var howtogenbottom = 'gen';
var chunktogenerate = 0;
function topGen(g){
document.getElementById('t' + chunktogenerate).setAttribute('src','images/terrain/t' + g + '.png');
if(g == 'gap0'){
howtogentop = 'gap';
}
else{
howtogentop = 'gen';
}
if(g == 'gap0' || g == 'gap2'){
generatedtop = 'gap';
}
else{
generatedtop = 'default';
}
}
function bottomGen(g){
document.getElementById('b' + chunktogenerate).setAttribute('src','images/terrain/b' + g + '.png');
if(g == 'gap0'){
howtogenbottom = 'gap';
}
else{
howtogenbottom = 'gen';
}
}
function generate(chunknum){
chunktogenerate = chunknum;
var rand1 = Math.floor(Math.random()*100)+1;
var rand2 = Math.floor(Math.random()*100)+1;
if(howtogentop == 'gen'){
if(rand1 <= 25){
topGen('space');
}
if(rand1 <= 50 && rand1 > 25){
topGen('jump');
}
if(rand1 <= 75 && rand1 > 50){
topGen('slide');
}
if(rand1 > 75){
topGen('gap0');
}
}
if(howtogentop == 'gap'){
topGen('gap2');
}
if(howtogenbottom == 'gen'){
if(generatedtop == 'gap'){
if(rand2 <= 33){
bottomGen('space');
}
if(rand2 <= 66 && rand2 > 66){
bottomGen('jump');
}
if(rand2 > 66){
bottomGen('gap0');
}
}
if generatedtop != 'gap'){
if(rand2 <= 25){
bottomGen('space');
}
if(rand2 <= 50 && rand2 > 25){
bottomGen('jump');
}
if(rand2 <= 75 && rand2 > 50){
bottomGen('jump');
}
if(rand2 > 75){
bottomGen('gap0');
}
}
}
if(howtogenbottom == 'gap'){
bottomGen('gap2');
}
}
浏览器似乎看不到“generate()”函数,我不知道为什么…这是因为您在定义函数之前调用了它。更改加载js文件的顺序应该可以解决这个问题
<script type="text/javascript" src="scripts/generation.js"></script>
<script type="text/javascript" src="scripts/levelmovement.js"></script>
这是因为您在定义函数之前调用了它。更改加载js文件的顺序应该可以解决这个问题
<script type="text/javascript" src="scripts/generation.js"></script>
<script type="text/javascript" src="scripts/levelmovement.js"></script>
此行:
if generatedtop != 'gap'){
缺少一个括号。正确答案是:
if(generatedtop != 'gap'){
这一行:
if generatedtop != 'gap'){
缺少一个括号。正确答案是:
if(generatedtop != 'gap'){
我来到这一页是为了寻找一个类似问题的解决方案。虽然本页没有直接帮助,但给出了解决问题的方向 发生这种情况的实际原因如下: 当你在一个js文件(比如file1.js)中有一个函数,你在另一个js文件(比如file2.js)中调用该函数时,即使它们在同一个html页面上被调用,如果整个file1.js中有任何js错误,该函数也不会工作,就像如果有错误,整个js文件根本不包括在内 因此,解决方案是清除包含在所有js文件中的所有js错误
希望这对某人有所帮助。我来到这个页面,是为了寻找一个类似问题的解决方案。虽然本页没有直接帮助,但给出了解决问题的方向 发生这种情况的实际原因如下: 当你在一个js文件(比如file1.js)中有一个函数,你在另一个js文件(比如file2.js)中调用该函数时,即使它们在同一个html页面上被调用,如果整个file1.js中有任何js错误,该函数也不会工作,就像如果有错误,整个js文件根本不包括在内 因此,解决方案是清除包含在所有js文件中的所有js错误
希望这对某人有所帮助。尝试将
generation.js
script标记放在levelmovement.js
脚本之前tag@MarkLinus那没用(然后看看你是否在generate
函数中调用了一个不存在的函数我只是希望它不是打字错误…@MarkLinus我检查过了…我只调用了两个函数,都是在generate.js中定义的。试着把generation.js
脚本标记放在levelmovement.js
脚本之前tag@MarkLinus那没用(然后看看你是否在调用generate
函数中不存在的函数我只是希望它不是打字错误…@MarkLinus我检查过了…我只调用了2个函数,都是在generate.js中定义的。但是我的“游戏”中的每个函数都只在window.onload或之后运行,但我的“游戏”中的每个函数只在window.onload或之后运行谢谢!你的a救命稻草!(该死的,它是一个打字错误…)现在可以工作了。:)谢谢!你的a救命稻草!(该死的,它是一个打字错误…)现在可以工作了。:)