Javascript 从外部.js文件动态访问不断变化的变量
我对javascript(通常是c++)非常陌生,我认为这个问题对大家来说应该是非常基本的 我有一个脚本,它获取外部.js文件中定义的变量,并使用警报显示它 .html文件中的代码如下所示Javascript 从外部.js文件动态访问不断变化的变量,javascript,html,Javascript,Html,我对javascript(通常是c++)非常陌生,我认为这个问题对大家来说应该是非常基本的 我有一个脚本,它获取外部.js文件中定义的变量,并使用警报显示它 .html文件中的代码如下所示 <html> <head> <title></title> <script> function addScript(url){ var extScript = document.createElement('script'); e
<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>
var controllerMode = 1111;
(就是这样!)
当我单击链接“get External defined mode”(获取外部定义模式)时,我的javascript将运行并正确显示警报。显示“Neo controllerMode变量正在读取1111”
但是,如果我将变量controllerMode的定义(在controller.js中)更改为
,点击save,然后再次单击该按钮(不刷新),它仍然会提醒“Neo controllerMode变量正在读取1111”。而应该说“Neo controllerMode变量正在读取2222”
似乎没有动态添加此脚本。我需要能够在不刷新.html的情况下更改此变量
提前感谢,
Guy听起来您的浏览器只是在检索缓存的javascript文件。确保直接转到更新的javascript文件(controller.js)并点击F5以确保加载的是新版本,而不是缓存的版本。否则,浏览器将继续将旧的缓存脚本(已定义1111)插入脚本。常见问题 刷新内容而不重新加载html的常用方法是使用ajax,对于您的问题,您可以尝试向javascript文件添加随机GET参数,如“controller.js?”+new Date().getTime();这可以防止caching这将不起作用,因为您的动态脚本是异步加载和执行的。您还应该考虑设置本地主机服务器,这样您就不会遇到对该文件的访问限制。此外,浏览器通常会限制本地文件访问,如果他们/或您允许,您需要使用文件:///前缀。尝试在浏览器中打开C:/Users/Suzaku/Documents/Javascript/controller.js(不应该工作),然后file:///C:/Users/Suzaku/Documents/Javascript/controller.js (应创建警告)“加载重新定义变量的新脚本”不是修改应用程序状态的正确方法。更常见的情况是,应用程序通过HTTP请求请求更新。无需担心,谢谢您的帮助。我已经用AJAX和httprequests指出了正确的方向,并且研究正在进行中。
var controllerMode = 2222;