Javascript: Как получить значение переменной из конкретного файла из 2 разных файлов?

1

У меня есть 1 страница, загружающая Js файл с другого сервера. Его файл загрузки для каждого продукта в магазине электронной коммерции с его идентификатором в 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, но я не знаю, как правильно его достичь. кто-нибудь пробовал что-то подобное?

Теги:
variables
dynamic-data

2 ответа

1
Лучший ответ

Вы можете закодировать ответ, который загружает внешний файл js динамически.

Как загрузить файл javascript динамически?

На каждой итерации прочитайте 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 берет данные только из последнего файла. У меня есть цикл загрузки файлов для каждого продукта.
  • 0
    отредактированный ответ.
Показать ещё 1 комментарий
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
    Не повезло, его данные только последние данные
  • 0
    @Kul вы используете items для доступа к вашим данным?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню