Javascript 不同游戏级别的范围问题

Javascript 不同游戏级别的范围问题,javascript,Javascript,我一整天都在努力为我的游戏建立一个等级转换机制。基本上我有一张世界地图,用户通过点击地图来加载不同的级别。但肯定有范围问题,因为我无法成功加载级别 这是我的密码: <body onload="start(world001map);"> <!--start the game with the worldmap --> </body> function start(whichLevel) { whichLevel(); }; function wor

我一整天都在努力为我的游戏建立一个等级转换机制。基本上我有一张世界地图,用户通过点击地图来加载不同的级别。但肯定有范围问题,因为我无法成功加载级别

这是我的密码:

<body onload="start(world001map);"> <!--start the game with the worldmap -->
</body>

function start(whichLevel) {
    whichLevel();
}; 

function world001map(){ //world001map contains everything needed to build the map

    document.getElementById('click_to_start_area')
        .addEventListener("click", //trying start level001
                          function(){
                              start(level001);//white screen
                              //if I do alert(level001) it shows me the content of the level001 function
                          })
}

function level001(){
    //bunch of staff for level001
}

功能启动(whichLevel){
whichLevel();
}; 
函数world001map(){//world001map包含构建映射所需的所有内容
document.getElementById('click_to_start_area')
.addEventListener(“单击“,//尝试启动level001
函数(){
开始(level001);//白色屏幕
//如果我发出警报(level001),它会显示level001函数的内容
})
}
函数level001(){
//level001的一批员工
}
你能找出薄弱环节吗?处理从其他游戏关卡加载不同游戏关卡的更好方法是什么

编辑:

冒着听起来愚蠢的风险(仍然是这样一个新手),在level001的所有代码循环通过之后,我们是否有可能将其“结果”返回给事件调用方?我们不是停留在001级,而是返回“结果”,这可能是问题所在?这有什么意义吗

编辑2:

这可能会有帮助:如果我只是在onload语句中插入level001,比如onload=“start(level001);”

然后正确加载level001。那么,当从click函数内部调用时,为什么不能正确加载它呢

编辑3: 经过多次调试,我有以下想法: 直接从body onload调用时,为什么所有东西都能工作的最好解释可能不是函数调用的范围,而是当我直接从body onload加载一个级别时,还没有对页面执行任何其他操作。我现在开始认为上一级的“垃圾”不知何故阻止了下一级的工作。我的主要嫌疑犯是canvas元素。事实上,当我从world001map中删除所有与画布相关的内容时,level001将被加载(尽管运行速度非常慢)

处理从其他游戏关卡加载不同游戏关卡的更好方法是什么

可以将对象与承载所有不同级别的方法一起使用

var levels = {
 'world001map': function () { //world001map contains everything needed to build the map

   document.getElementById('click_to_start_area').addEventListener("click", this.level001)

  },
  'level001': function () {
    //bunch of staff for level001
  }
};

// you may call it using a string
levels['level001']();
将javascript置于html调用之上

 <body onload="levels.world001map();">


Javascript控制台中是否有任何错误?没有错误,只是在启动(level001)时没有发生任何事情!古怪警报(level001)确实向我显示了level001函数的内容!如果您在
level001
中设置断点,它是否达到了断点?“无法加载级别”是对问题的无用描述,因为您没有显示如何尝试“加载”级别。如果我发出警报(level001),您会看到注释
,它会向我显示level001函数的内容,这就是应该发生的事情。我对调试器不是很有经验,但它确实会转到那一行,当我点击“跳过”时,它会说“返回未定义”在函数作用域下。他似乎想在哪里使用字符串?他将未声明的变量传递到函数调用中,我假设他这样做了,因为否则传递字符串将抛出
字符串不是函数
错误。因此,有能力做到这一点的前wayHi!您的解决方案听起来很有趣,但困难在于:因为我在每个级别中都有很多事情发生,所以我在每个级别的单独javascript文件中定义级别。我还可以用你想到的技术来做吗?他没有将任何未声明的变量传递到函数调用中
level001
是已定义函数的名称。您有权访问该文件吗?