1

data1.jsとdata2.jsの2つのファイルがありますdata1.jsには次のような変数があります

var rows = ['g1', 'g2'];

data2.jsには次のような変数があります

var rows = ['g1', 'g2', 'g3', 'g4'];

最初に、私はdata1.jsを使用してロードしています

<script id="datascript" type="text/javascript" src="data1.js"></script>

ただし、ボタンをクリックすると、コンテンツをロードする(つまり、変数行を更新する)ことを期待してdata2.jsをロードしています。

onclick="datascript.src='data2.js';alert(rows);"

ただし、rows変数は更新されません。私は何が欠けていますか?

ありがとう

4

1 に答える 1

3

問題は、2番目のJSファイルがダウンロードされてブラウザによって実行されるrowsに、変数の値を読み取ろうとしていることです。これを解決するには:

jQuery.getScript()-http : //api.jquery.com/jQuery.getScript/-を使用します。これは、スクリプトがダウンロードされて実行されたにコールバックを提供します。

コード

$('#datascript').remove();
$.getScript("data2.js", function(data, textStatus, jqxhr) {
   alert(rows);
});

または、純粋なJSを使い続けたい場合は、次のことができます。

参照:http ://www.hunlock.com/blogs/Howto_Dynamically_Insert_Javascript_And_CSS

// 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);
于 2012-09-30T09:30:50.253 に答える