Javascript : 如何从 2 个不同的文件中获取特定文件的变量值?
Javascript : How to get value of variable from specific file from 2 different file?
我有 1 个页面从另一台服务器加载 Js 文件。电子商务商店中每个产品的加载文件,其 ID 在 url 中,请参见以下结构。
产品 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 文件都包含如下代码
var MyItemData={"counts":{"q":1,"a":1,"r":2,"ar":4,"rr":0,"dq":1,"da":1,"c":0,"sdsd":0},"active":true};
现在我正在阅读 Html 中的数据,如下所示
var mycounta = MyItemData.counts.a;
var mycountq = MyItemData.counts.q;
var mycountr = MyItemData.counts.r;
这里的问题是我只能获取最后一个产品的数据,因为变量 MyItemData
对于所有文件都是相同的。我必须通过 id 读取每个文件,但我不知道实现它的正确方法。有人试过这样的东西吗?
前提是您使用 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>
等等
您可以循环下面的答案,动态加载外部 js 文件。
How do I load a javascript file dynamically?
在每次迭代中,阅读 MyItemData
并使用它。
通过使用上面的函数 loadJS
link;
<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>
我有 1 个页面从另一台服务器加载 Js 文件。电子商务商店中每个产品的加载文件,其 ID 在 url 中,请参见以下结构。
产品 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 文件都包含如下代码
var MyItemData={"counts":{"q":1,"a":1,"r":2,"ar":4,"rr":0,"dq":1,"da":1,"c":0,"sdsd":0},"active":true};
现在我正在阅读 Html 中的数据,如下所示
var mycounta = MyItemData.counts.a;
var mycountq = MyItemData.counts.q;
var mycountr = MyItemData.counts.r;
这里的问题是我只能获取最后一个产品的数据,因为变量 MyItemData
对于所有文件都是相同的。我必须通过 id 读取每个文件,但我不知道实现它的正确方法。有人试过这样的东西吗?
前提是您使用 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>
等等
您可以循环下面的答案,动态加载外部 js 文件。
How do I load a javascript file dynamically?
在每次迭代中,阅读 MyItemData
并使用它。
通过使用上面的函数 loadJS
link;
<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>