#jquery
#jquery
Вопрос:
У меня действительно нет идей. Я читал об этой проблеме, но не нашел ответа, который соответствовал бы моим потребностям. Итак, вот сценарий
У меня есть несколько входных данных, где я получаю значение по их id
<input type="hidden" id="name" value="Taco house" />
<input type="hidden" id="pin" value="Mexican" />
И я пытаюсь использовать значение как index
для построения массива
var name = $('#name').val();
var pin = $('#pin').val();
markersData = {
pin: [ //here it should put 'Mexican' instead it puts 'pin'
{
name: name,
location_latitude: 43.5391318,
location_longitude: 10.3020171,
//other nodes here
}
]
};
Если я печатаю pin
переменную перед передачей в массив, она выводит ее фактическое значение, но как только я перехожу к массиву, значение теряется, и индекс становится pin-кодом.
Конечно, это очевидный вопрос, но, поскольку я не настолько хорош в jquery, мне нужна помощь.
Комментарии:
1. Можете ли вы опубликовать свой полный код?
2. Ваша проблема совсем не ясна, но вы пробовали
var foo = markersData.pin[parseInt(pin, 10)]
3. Не могли бы вы опубликовать дополнительную информацию? трудно понять проблему из вашего описания
4. У вас нет pin-кода с атрибутивным pin-кодом. У вас есть именованный PIN-код. Итак, как это
name:name
выглядит?name:"Taco house"
?5. @mplungjan да, на самом деле имя выглядит так
name:"Taco house"
Ответ №1:
Это должно сработать :
var name = $('#name').val();
var pin = $('#pin').val();
markersData = {};
markersData[pin] = [{
name: name,
location_latitude: 43.5391318,
location_longitude: 10.3020171,
//other nodes here
}];
Ваш способ не сработает, потому что анализатор рассматривает pin как строку, а не как содержимое вашей переменной «pin». Вы также не можете использовать markersData.pin по той же причине.
Насколько я знаю (возможно, я ошибаюсь), единственный способ сделать это — использовать квадратные скобки, что может немного сбить с толку, поскольку это похоже на добавление индекса в массив. Надеюсь, это поможет
Комментарии:
1. Это
markersData[pin]
то жеmarkersData.pin
самое, что и? Пожалуйста, объясните, что вы на самом деле здесь делаете, чтобы помочь спрашивающему понять, почему это должно «делать трюк».2. @Zack, я на самом деле обновлял свой ответ, чтобы добавить некоторые пояснения. Это также должно ответить на ваш вопрос.
3. Это действительно работает, но я не понимаю, почему я не могу использовать переменную для построения индекса массива моим предыдущим способом
4. @Fabio Кто-нибудь может дать вам лучшее объяснение, поскольку я не разбираюсь во внутренней работе javascript, но, насколько я понимаю, анализатор не видит pin как переменную, когда вы используете ее в качестве ключей объекта. Я думаю, что это предназначено для предотвращения путаницы, JS не может знать, хотите ли вы использовать строку или объявленную вами переменную.
5. Я вижу, я тоже не эксперт, я знаю, что он должен правильно работать в php