1)我有这个Javascript数组:
lang=new Array();
lang["sq"]="Albanian";
lang["ar"]="Arabic";
lang["en"]="English";
lang["ro"]="Romanian";
lang["ru"]="Russian";
2)在其他一些过程中,变量中有一个返回值:
result.detectedSourceLanguage = 'en';
3)现在,我想打印语言全名:
alert(lang[result.detectedSourceLanguage]);
对话框显示:未定义
有什么想法吗?
BTW:即时通讯使用JQuery,欢迎使用JQuery解决方案。
答案 0 :(得分:21)
Array
使用整数索引。您可能需要Object
,它支持字符串索引:
lang=new Object();
lang["sq"]="Albanian";
lang["ar"]="Arabic";
lang["en"]="English";
lang["ro"]="Romanian";
lang["ru"]="Russian";
// or
lang = {
'sq': 'Albanian',
'ar': 'Arabic',
// ...
'ru': 'Russian'
};
(后一个例子可能更好,因为更多的JS程序员会对此感到满意。)
答案 1 :(得分:3)
此脚本生成一个消息框(在IE和FF中选中),显示“英语”:
lang = new Array();
lang["sq"] = "Albanian";
lang["ar"] = "Arabic";
lang["en"] = "English";
lang["ro"] = "Romanian";
lang["ru"] = "Russian";
detectedSourceLanguage = 'en';
alert(lang[detectedSourceLanguage]);
唯一的问题可能是result
对象。
答案 2 :(得分:1)
检查result
(和result.detectedSourceLanguage
)的类型和值。它可能是以下之一
result
未定义result
不是对象,或者没有任何名为detectedSourceLanguage
result.detectedSourceLanguage
的值不是字符串,或者lang
中没有这样的键(然后它应该为undefined
返回alert(lang[result.detectedSourceLanguage]);
)BTW,你的问题与jQuery无关
答案 3 :(得分:0)
在使用之前立即尝试提醒result.detectedSourceLanguage。有可能它不符合您的预期。这应该有用。