JavaScript Array ведет себя по-разному

0

У меня html как

<div id="MAC_Allocation_Heading">
               <span style="position:relative;left:2%;"> 
                   MAC Allocation
               </span> 
               <span style="position:relative;left:9%;"> 
                  <label>Quantity</label>
                  <input type="text" style="width:40%" name="txtMACNeededAllocations"/>
               </span> 
  </div>

Теперь в моем.js файле у меня есть глобальный массив как

var user_entry = [$("#MAC_Allocation_Heading input[type=text]:first")]  

и внутри FormValidate() У меня есть следующий код

function FormValidate() {

     console.log(user_entry[0].val());
}

Я запустил приложение и ввел значение в текстовое поле. Но я получаю консольный вывод как 'undefined'.

Если я помещаю массив "user_entry" внутри функции, то могу получить значение текстового поля.
Какова причина?
Я хотел бы сохранить этот массив по всему миру, так как он будет использоваться другими функциями

  • 9
    Скорее всего, вы запускаете var user_entry = [$("#MAC_Allocation_Heading input[type=text]:first")] до того, как элемент существует, и, следовательно, вы получаете пустой объект jQuery. Пожалуйста, прочтите руководство по jQuery : «Для запуска кода, как только документ готов к работе, в jQuery есть оператор, известный как событие ready: $( document ).ready(function() { ... }); »
  • 1
    Нет. Запускаю функцию по нажатию кнопки
Показать ещё 7 комментариев
Теги:
dom

2 ответа

0

Попробуй это:

    var user_entry = [];


    function FormValidate() 
    {  
         alert(user_entry[0].val());
    }

    $(document).ready(function()
    {
         user_entry = [$("#MAC_Allocation_Heading input[type=text]:first")]  
    })

Благодаря этому вы можете достичь "Я бы хотел сохранить этот массив по всему миру, так как он будет использоваться и другими функциями".

0

Я получил вопрос в соответствии с комментариями выше

Я инициализировал массив внутри $ (document).ready(function() {...});
и это решило мою проблему

Проблема заключается в том, что я включил файл.js перед тегом, чтобы до полной загрузки DOM я пытаюсь получить ссылку на объект, который, очевидно, пуст

Ещё вопросы

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