jQuery: заменить (объединить) значение кнопки на строку переменной - PullRequest
0 голосов
/ 10 февраля 2012

Итак, у меня есть кнопка, значение которой объединено из переменных и строк:

$('#btn1').attr('value','question'+currid+'ans1').button('refresh');

Это вернет что-то вроде question5ans1, например. Теперь, в верхней части документа javascript, это значение существует как переменная со связанной строкой, например:

var question5ans1 = "Sydney";

Проблема в том, что кнопка отображает «question5ans1» вместо «Sydney». Есть ли способ исправить / изменить это?

Ответы [ 3 ]

3 голосов
/ 10 февраля 2012

Используйте eval, чтобы оценить строку как переменную.

$('#btn1').attr('value', eval('question'+currid+'ans1')).button('refresh');

Вместо eval, лучшее решение состоит в том, чтобы иметь такой var в объекте, как показано ниже,

var questions = {'question5ans1' : 'Sydney' };

и в функции

$('#btn1').attr('value', questions['question'+currid+'ans1']).button('refresh');
0 голосов
/ 10 февраля 2012

Вы должны прикрепить переменные такого типа к объекту, поскольку вы не можете напрямую преобразовать строку в имя переменной. eval не должен использоваться.

var q = {
    question3ans1: "London",
    question4ans1: "Tokyo",
    question5ans1: "Sydney"
};

$('#btn1').attr('value', q['question' + currid + 'ans1'] ).button('refresh');
0 голосов
/ 10 февраля 2012

Если переменная находится в глобальной области видимости, вы, вероятно, можете извлечь ее следующим образом:

$("#btn1").val(window['question' + currid + 'ans1']);
...