这是我缩短的脚本:
var string1 = "This is string 1";
var string2 = "This is string 2";
function test() {
var selectedOption = $("select#myoptions option:selected").attr("id");
var str = 'string'+selectedOption;
$("div#result").html(str);
}
$("select#myoptions").change(test);
我有一个下拉列表,每个选项都有一个整数id。选择此下拉列表时,我希望jQuery获取所选选项的id,并显示最后具有所选id的字符串变量的内容。
如果选择ID为“1”的选项,将显示“This is string 1”,...
但我现在得到的是显示文本“string1”而不是文本“This is string 1”。
我需要一些帮助。非常感谢!
答案 0 :(得分:6)
您可以更新测试功能以使用eval():
function test() {
var selectedOption = $("select#myoptions option:selected").attr("id");
eval('$("div#result").html(string' + selectedOption + ');');
}
试一试。
我提供这个作为一种方式来准确地告诉你你所要求的,尽管我真的很喜欢Rocket提供的答案,这需要对你如何存储你的字符串进行一些小改动。
答案 1 :(得分:3)
你有什么理由不能做?
function test() {
var selectedOption = $("select#myoptions option:selected").attr("id");
var str = 'This is string ' + selectedOption;
$("div#result").html(str);
}
$("select#myoptions").change(test);
实际上,我想你有不同的字符串而不是显示,试试:
var stringArray = ['this is string 1', 'this is string 2'];
function test() {
var selectedOption = $("select#myoptions option:selected").attr("id");
var str = stringArray[selectedOption -1];
$("div#result").html(str);
}
$("select#myoptions").change(test);
你不能像你提到的那样动态使用变量,你最好的办法就是得到一个数组并按索引拉出项目。
答案 2 :(得分:3)
您可以使用对象存储这些值,然后通过其键获取它们。
var strings = {
string1: 'This is string 1',
string2: 'This is string 2'
};
function test() {
var selectedOption = $("select#myoptions option:selected").attr("id");
var str = 'string'+selectedOption;
$("div#result").html(strings[str]);
}
$("select#myoptions").change(test);
或者,您可以按照您拥有的方式保留字符串,并通过window
对象访问它们(如果它们位于全局范围内)。
var string1 = "This is string 1";
var string2 = "This is string 2";
function test() {
var selectedOption = $("select#myoptions option:selected").attr("id");
var str = 'string'+selectedOption;
$("div#result").html(window[str]);
}
$("select#myoptions").change(test);
答案 3 :(得分:3)
所以,我很惊讶没有人添加这个答案,这直接回答了OP的问题。我同意其他方法更好,但你可以通过这样做的方式解决他的问题:
var str = 'string'+selectedOption;
var foundString = window[str];
答案 4 :(得分:2)
没有什么特别的理由说它必须比数组更难,对吗?
var strs = [
"This is string 1", // Note, this is strs[0], not strs[1]
"This is string 2"
];
function test() {
var selectedOption = $("select#myoptions option:selected").attr("id");
$("div#result").html(strs[selectedOption]);
}
$("select#myoptions").change(test);
如果你真的需要,你可以使用哈希,比如
var strs = {
dog: "This is string 1",
cat: "This is string 2"
};
但无论如何,99%的时候人们试图使用一个不变的值(即数组的名称)和一个变量(即一个键)来查找一个变量,他们想要使用更简单的东西数组或哈希。