从外部源动态更改javascript变量

从外部源动态更改javascript变量,javascript,Javascript,我有两个文件data1.js和data2.js data1.js的变量如下 var rows = ['g1', 'g2']; data2.js的变量如下 var rows = ['g1', 'g2', 'g3', 'g4']; 最初,我使用 <script id="datascript" type="text/javascript" src="data1.js"></script> 但是,my rows变量不会更新。我错过了什么 谢谢问题在于,在浏览器下载并执行第二

我有两个文件data1.js和data2.js data1.js的变量如下

var rows = ['g1', 'g2'];
data2.js的变量如下

var rows = ['g1', 'g2', 'g3', 'g4'];
最初,我使用

<script id="datascript" type="text/javascript" src="data1.js"></script>
但是,my rows变量不会更新。我错过了什么


谢谢

问题在于,在浏览器下载并执行第二个JS文件之前,您试图读取
变量的值。要解决这个问题:

使用
jQuery.getScript()
-——它在下载并执行脚本后提供回调

代码

$('#datascript').remove();
$.getScript("data2.js", function(data, textStatus, jqxhr) {
   alert(rows);
});
或者,如果你想坚持使用纯JS,你可以:

参考:


插入一个新的
元素,仅仅更改一个现有元素的url是不起作用的(至少在所有浏览器中都不起作用)。谢谢,但这让我知道XMLHttpRequest无法加载PATH-TO-DATA/data2.js?\u=1348997881471。Access Control Allow Origin不允许Origin null…假设data2.js来自同一服务器,您可以提供相对于文档根的js文件的完整路径。请检查上面更新的代码。检查更新的答案。我已经输入了一些代码,以便在每次输入新的脚本元素时删除以前的脚本元素。请注意,这不会删除任何功能等。。由上一个实例定义。它只从DOM中删除脚本元素。谢谢!JS解决方案对我来说非常有效。我认为jquery解决方案也可以,但我做了一些研究,Chrome不允许我选择本地文件(即,我的代码必须在服务器上才能避免XMLHttpRequest错误)
$('#datascript').remove();
$.getScript("data2.js", function(data, textStatus, jqxhr) {
   alert(rows);
});
// remove previous script element
var sElem = document.getElementById('datascript')
sElem.parentNode.removeChild(sElem);

// insert new script
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.id = 'datascript';
newScript.onload= function() {
   alert(rows);
};
newScript.src = 'data2.js';
document.getElementsByTagName("head")[0].appendChild(newScript);