我对 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。
提前致谢,
盖伊
最佳答案
听起来您的浏览器只是检索缓存的 JavaScript 文件。确保直接转到更新的 javascript 文件 (controller.js) 并按 F5 以确保您正在加载新版本,而不是缓存的版本。否则,您的浏览器将继续将旧的缓存脚本(已定义 1111)插入您的脚本中。常见问题!
关于javascript - 从外部 .js 文件动态访问不断变化的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15066548/