2017-06-01 5 views
1

私は別のサーバーからJsファイルをロードする1ページを持っています。 urlのidを持つ電子商取引ストアの各製品のロードファイルは、以下の構造を参照してください。Javascript:2つの異なるファイルから特定のファイルから変数の値を取得するには?

製品1: http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/1/d/itemjs

製品2:

http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/2/d/itemjs

製品3:

http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/3/d/itemjs

すべてのJSファイルが

以下のようなコードが含まれていますここでの問題は、変数 MyItemDataは、すべてのファイルに対して同じであるように私が唯一の最後の製品のためのデータを得ることができるである

var mycounta = MyItemData.counts.a; 
    var mycountq = MyItemData.counts.q; 
    var mycountr = MyItemData.counts.r; 

以下のよう

var MyItemData={"counts":{"q":1,"a":1,"r":2,"ar":4,"rr":0,"dq":1,"da":1,"c":0,"sdsd":0},"active":true}; 

は今、私はHTMLでこのデータを読んでいます。私はidで各ファイルを読んだが、私はそれを達成するための適切な方法を知らない。誰もこれのような何かを試したのですか?

答えて

1

あなたはループ動的に外部JSファイルをロードし、それ以下の回答をすることができます。各反復で

How do I load a javascript file dynamically?

MyItemDataを読んで、それを使用しています。

上記のリンクに関数loadJSを使用すると、

<script type="application/javascript"> 
var listOfJSFiles=["http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/1/d/itemjs", "http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/2/d/itemjs", "http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/3/d/itemjs"]; 
var listOfMyItemData=[]; 

function loadJS(file) { 
    // DOM: Create the script element 
    var jsElm = document.createElement("script"); 
    // set the type attribute 
    jsElm.type = "application/javascript"; 
    // make the script element load file 
    jsElm.src = file; 
    // finally insert the element to the body element in order to load the script 
    document.body.appendChild(jsElm); 
} 

var arrayLength = listOfJSFiles.length; 
for (var i = 0; i < arrayLength; i++) { 
    loadJS(listOfJSFiles[i]); 
    listOfMyItemData.push(MyItemData); 
    //removing listOfJSFiles[i] from html is recommended. 
} 

</script> 
+0

ファイルは既にページにロードされています。 'MyItemData'は最後のファイルからのデータしか受け取りません。製品ごとにファイルを読み込むためにループしました。 – Kul

+0

編集されたレスポンス。 –

+0

その作品! – Kul

1

scriptタグを使用してこれらのファイルをロードすることを条件とします。項目を保持する配列を作成し、配列内に現在の値MyItemDataを保存するインラインスクリプトでスクリプトタグを混在させることができます。 (後がうまくいくかどうかわからない)

<script> 
    var items = [], 
     addItem = function() { 
      items.push(MyItemData) 
     }; 
</script> 

その後、各スクリプトの後addItemを呼び出すかonloadイベントで遊びます。

<script 
src="http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/1/d/itemjs" 
> 
</script> 

<script>addItem()</script> 

<script 
src="http://static.www.xxx.com/mydata/uXKojYEd9WXFpAasite/v4_3/2/d/itemjs" 
> 
</script> 

<script>addItem()</script> 

など

+0

最後のファイルのデータがありません – Kul

+0

@Kulはあなたのデータにアクセスするのに 'items'を使用していますか? –

関連する問題