JQuery для доступа к массиву JS в другом файле?

0

У меня есть массив js в отдельном файле array_wsd01.js, и я хочу, чтобы код jquery ui dialog обращался к его элементам. Содержимое файла:

var E2tw.arrayWsd01 = 
[["text01", "audio01"], 
["text02", "audio02"],      
...  
["text10", "audio10"]]; 

и код диалога:

jQuery(document).ready(function() {

  jQuery("div#ws_dialog").dialog({
     autoOpen: false,
     modal: true,
     resizable: false,
     draggable: false   
 });

 jQuery(".ui-dialog-titlebar").removeClass('ui-widget-header');

  jQuery("span.ws_dialog_icon").on("click",function(evnt) {
    jQuery("div#ws_dialog").dialog("open");
    evnt.stopPropagation();
    jQuery("div#wsd_text").text(E2tw.arrayWsd01[0][0]); 
  });     
}); 

Это не отображает значение E2tw.arrayWsd01 [0] [0], в то время как отображается строка, такая как "Привет, там" или некоторые такие. Firebug показывает, что загружается массив_wsd01.js. Что я делаю не так?

  • 0
    Вы загружали файл, определяющий массив, до того, как файл получил к нему доступ?
  • 0
    Я использую Joomla CMS. Я предполагаю, что массив загружается до того, как я его использую, поскольку я проверил это в firebug, и там отображается array_wsd01.js, прежде чем щелкнуть, чтобы открыть диалоговое окно.
Теги:

3 ответа

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

изменение

var E2tw.arrayWsd01 = 
[["text01", "audio01"], 
["text02", "audio02"],      
...  
["text10", "audio10"]]; 

в

E2tw.arrayWsd01 = 
[["text01", "audio01"], 
["text02", "audio02"],      
...  
["text10", "audio10"]]; 

"var" не требуется для присвоения значений свойствам E2tw.

И я настоятельно рекомендую вам использовать JSLint для проверки кода JavaScript в будущем. Это отлично подходит для таких проблем, как этот :-)

  • 0
    Я не могу заставить вещь @name работать. Какие-либо предложения?
  • 0
    Как я упоминал выше, я уже использую объект E2tw для пространства имен глобальных переменных. Поэтому, чтобы объявить это снова, удалили все ранее назначенные свойства. Возможно, предложение Феликса Кинга - это путь? @randomducks
Показать ещё 4 комментария
0

ваш файл должен быть таким

/A.js

 var E2tw = [["text01", "audio01"],["text02", "audio02"],      
  ...  
  ["text10", "audio10"]]; 

Использовать в другом файле

B.html

<script src="/A.js"></script>
<script>
  function(){
     alert(E2tw[0]);//you can use directly as variable.
  }
</script>
  • 0
    @ rajesh kakwat Вы имеете в виду, что между элементами массива не должно быть CR или пробелов?
  • 0
    @ user2176936 нет, вам просто нужно включить файл в сценарий src и включить его перед использованием. Просто проверьте соглашение об именах переменных.
0

var E2tw.arrayWsd01 = является недопустимым синтаксисом. Вы должны увидеть синтаксическую ошибку. Пока у вас есть синтаксическая ошибка, код не может быть оценен.

Предположим, что файл действительно загружен, изменив его на

var E2tw = {
    arrayWsd01: [["text01", "audio01"], ...]
};

должен исправить эту проблему. Это объявляет объект с свойством arrayWsd01, к которому можно получить доступ как E2tw.arrayWsd01 (как вы уже это сделали). Конечно, если это единственное свойство, вообще не имеет смысла использовать объект.

  • 0
    Я уже использую объект E2tw для пространства имен глобальных переменных. Таким образом, я могу назначить arrayWsd01 для E2tw, как вы предлагаете, или это перезапишет ранее назначенные свойства? @ Феликс Клинг
  • 1
    Тогда, возможно, это должен быть E2tw.arrayWsd01 , но вы сказали в другом комментарии, что он не работает и для вас. В этом случае у нас недостаточно информации, чтобы помочь вам.

Ещё вопросы

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