2012-12-14 114 views
3

有谁知道我怎么能从JavaScript中的字符串中选择一个变量?这是我基本上想要实现的:从字符串获取变量

var myLang = "ESP"; 

var myText_ESP = "Hola a todos!"; 
var myText_ENG = "Hello everybody!"; 

console.log(myText_ + myLang); // This should trace "Hola a todos!" 

谢谢!

+2

相关:jQuery的Language Switcher](http://stackoverflow.com/questions/13427723/jquery-language-switcher)。 – Sampson

回答

6
var hellos = { 
    ESP: 'Hola a todos!', 
    ENG: 'Hello everybody!' 
}; 

var myLang = 'ESP'; 

console.log(hellos[myLang]); 

我不喜欢把一切都在全球范围内,然后串访问窗口属性;所以这是另一种方式。

+0

哈,打我:) –

+0

伟大的思想和什么不是:) – Chad

4

如果变量是在全球范围内定义,你可以这样做:

console.log(window['myText_' + myLang]); 
+0

谢谢你,你救了我的生命和我的神经元! :) –

0

这不是一个好的实践,但你可以尝试使用eval()函数。

var myLang = "ESP"; 

var myText_ESP = "Hola a todos!"; 
var myText_ENG = "Hello everyboy!"; 

console.log(eval('myText_' + myLang)); 
+0

'eval()'真的很强大,但值得注意的是它的力量可以被滥用。它可能是一个安全(和代码维护)责任。 –

+0

感谢理查德的推荐。这就是我说这不是一个好实践的原因。 :) –

1
var myLang = "ESP"; 

var myText = { 
    ESP : "Hola a todos!", 
    ENG : "Hello everybody!" 
} 

console.log(myText[myLang]); // This should trace "Hola a todos!" 
1

您可以使用eval为,但是这是非常不好的做法:

console.log(eval("myText_" + myLang); 

我会建议有一个对象,而不是:

var myLang = "ESP"; 
var texts = { 
    'ESP': "Hola a todos!", 
    'ENG': "Hello everyboy!" 
}; 
console.log(texts[ myLang ]);