0

不确定标题。

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

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

有了这个,我想随机地动态填充一个选择列表,总共 12 个变量和一个数字数组。

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

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

4

4 回答 4

2

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

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

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

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

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

.text(answerOptions[i])
于 2013-10-10T14:44:57.147 回答
1

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

var answerOption  = ["Agra", "chicago", "Halong Bay"];
$('<option>').val(theAnswer).addClass('fieldbox').text(answerOption[i]).appendTo("#answers");
于 2013-10-10T14:45:09.280 回答
1

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

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

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

$('<option>')
    .val(theAnswer)
    .addClass('fieldbox')
    .text(answerOptions[i])  // <----
    .appendTo("#answers");
于 2013-10-10T14:45:26.283 回答
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 等。

于 2013-10-10T14:46:50.833 回答