结合2个部分在jQuery中创建变量

时间:2013-10-10 14:42:27

标签: jquery

不确定标题。

我有一个变量列表,基数名称带有数字:

var answerOption1 = "Agra";
var answerOption2 = "Chicago";
var answerOption3 = "Halong Bay";

我希望随机动态填充一个选择列表,总共12个变量和一组数字。

$('<option>').val(theAnswer).addClass('fieldbox').text(answerOption + arr[i]).appendTo("#answers");

由于它不起作用,它因为answerOption未定义而遇到错误,但我需要它在从变量中调用值之前包含数组中的数字

4 个答案:

答案 0 :(得分:2)

您可以使用括号表示法按键访问属性:

.text(window['answerOption' + arr[i]])

我使用了窗口,因为(我认为)你的变量是全局的。如果不是,则需要将它们放在一个对象中,并用该对象的名称替换window

创建值的实际数组可能更好:

var answerOptions = [
    "Agra",
    "Chicago",
    "Halong Bay"
];

.text(answerOptions[i])

答案 1 :(得分:1)

您需要定义answerOption而不是变量,并使用索引器访问数组的每个元素。

var answerOption  = ["Agra", "chicago", "Halong Bay"];
$('<option>').val(theAnswer).addClass('fieldbox').text(answerOption[i]).appendTo("#answers");

答案 2 :(得分:1)

您应该使用单个数组而不是12个变量。

var answerOptions = [
    "Agra",
    "Chicago",
    "Halong Bay"
];

然后填充它,但是你想要指向变量的索引。

$('<option>')
    .val(theAnswer)
    .addClass('fieldbox')
    .text(answerOptions[i])  // <----
    .appendTo("#answers");

答案 3 :(得分:0)

当您动态生成名称时从变量中检索是可能的,但根据其范围可能会很棘手。我倾向于用变量创建一个对象,如下所示:

var variableObject = {
    answerOption1 : "Agra",
    answerOption2 : "Chicago",
    answerOption3 : "Halong Bay"
}

然后你会这样做:

$('<option>').val(theAnswer).addClass('fieldbox').text(variableObject["answerOption" + arr[i]]).appendTo("#answers");

当然假设arr[i]具有“变量”的动态部分(它现在实际上是对象的属性)名称,所以1,2,3等等。