不确定标题。
我有一个变量列表,基数名称带有数字:
var answerOption1 = "Agra";
var answerOption2 = "Chicago";
var answerOption3 = "Halong Bay";
我希望随机动态填充一个选择列表,总共12个变量和一组数字。
$('<option>').val(theAnswer).addClass('fieldbox').text(answerOption + arr[i]).appendTo("#answers");
由于它不起作用,它因为answerOption未定义而遇到错误,但我需要它在从变量中调用值之前包含数组中的数字
答案 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等等。