Javascript:从另一个js文件访问时,全局变量失去其值

时间:2016-06-29 10:44:49

标签: javascript node.js scope global-variables

我正在使用nodejssocket.io制作应用(游戏)。

我的javascript文件很少,有三个需要考虑:userDetails.jsboard.jsmodal.html

现在让userDetails.js文件声明一个变量:var myUserName。因为它是全局的,所以我也可以从其他文件中访问它。

我的board.html文件加载board.js文件。 board.js文件包含以下子代码:

window.onload = init;
function init() {
    setUserName();
    . . . 
}
function setUserName(){
    var myUrl = window.location.href;
    myUserName = myUrl.slice(muUrl.indexOf("?")+1,myUrl.indexOf("!"));
    //here myUserName gets some value like "John"
}

我的modal.html将其作为子码:

<script type="text/javascript" src="Scripts/userDetails.js"></script>
<script>
. . . 
document.getElementById("username").innerHTML = MyUserName;
//myUserName loses its value here. Its undefined.
showNow();
</script>

showNow()函数显示模态。

问题: 显示模态时,用户名id显示&#34; undefined&#34;作为价值。 myUserName有一些价值,那么为什么它被视为&#34; undefined&#34;在modal.html档案中。

2 个答案:

答案 0 :(得分:0)

未定义,因为您在删除它时使用大写字母MyUsername调用它var myUserName

答案 1 :(得分:0)

我认为您可能忘记在userDetails add

结束时导出myUserName

module.exports = myUserName;

以及您想要使用的地方添加

var myUserName = require("yourPath/userDetails.js");