1

我对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。

提前致谢,

盖伊

4

1 回答 1

0

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

于 2013-02-25T12:11:39.190 回答