从外部.js文件动态访问更改变量

时间:2013-02-25 12:04:00

标签: javascript html

我是javascript(c ++)的新手,我认为这个问题对你们所有人来说应该是非常基础的。

我有一个脚本,它获取在外部.js文件中定义的变量,并使用警报显示它。

.html文件中的代码如下所示。

<html>
<head>
<title></title>
<script> 

function addScript(url){
    var extScript = document.createElement('script');
    extScript.type = 'text/javascript';
    extScript.src = url;
    extScript.id = 'extScript'

    //If there is already a script with the ID 'extScript'
    //get rid of it
    var headList = document.getElementsByTagName('head');
    var scriptList = headList[0].getElementsByTagName('script');
    for(var i = 0; i < scriptList.length; i++)
    {
        if(scriptList[i].id =='extScript')
        {
            document.getElementsByTagName('head')[0].removeChild(scriptList[i]);
        }
    }

    document.getElementsByTagName('head')[0].appendChild(extScript);

}

function newNewChangeMode()
{
    addScript("C:/Users/Suzaku/Documents/Javascript/controller.js");
    alert("Neo controllerMode variable is reading " + controllerMode);
}

</script>
</head>
<body>
<a href="javascript:newNewChangeMode()">Get externally defined mode</a>
</body>
</html>

文件“controller.js”看起来像这样。

var controllerMode = 1111;

(就是这样!)

当我点击“获取外部定义模式”链接时,我的javascript运行并且警报正确显示。显示“Neo controllerMode变量正在读取1111”。

但是,如果我将变量controllerMode的定义(在controller.js中)更改为

 var controllerMode = 2222;

,点击保存,然后再次单击该按钮(不刷新),它仍会提示“Neo controllerMode变量正在读取1111”。而应该说“Neo controllerMode变量读取2222”。

似乎没有动态添加此脚本。我需要能够更改此变量而无需刷新.html。

提前致谢,

1 个答案:

答案 0 :(得分:0)

听起来您的浏览器只检索缓存的javascript文件。确保直接转到更新的javascript文件(controller.js)并点击F5以确保您正在加载新版本,而不是缓存的版本。否则,您的浏览器将继续将旧的缓存脚本(已定义1111)插入到您的脚本中。常见问题!