У меня 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" внутри функции, то могу получить значение текстового поля.
Какова причина?
Я хотел бы сохранить этот массив по всему миру, так как он будет использоваться другими функциями
Попробуй это:
var user_entry = [];
function FormValidate()
{
alert(user_entry[0].val());
}
$(document).ready(function()
{
user_entry = [$("#MAC_Allocation_Heading input[type=text]:first")]
})
Благодаря этому вы можете достичь "Я бы хотел сохранить этот массив по всему миру, так как он будет использоваться и другими функциями".
Я получил вопрос в соответствии с комментариями выше
Я инициализировал массив внутри $ (document).ready(function() {...});
и это решило мою проблему
Проблема заключается в том, что я включил файл.js перед тегом, чтобы до полной загрузки DOM я пытаюсь получить ссылку на объект, который, очевидно, пуст
var user_entry = [$("#MAC_Allocation_Heading input[type=text]:first")]
до того, как элемент существует, и, следовательно, вы получаете пустой объект jQuery. Пожалуйста, прочтите руководство по jQuery : «Для запуска кода, как только документ готов к работе, в jQuery есть оператор, известный как событие ready:$( document ).ready(function() { ... });
»