我有一些简单的链接,如:
<a id="en">EN</a> <a id="fr">FR</a> etc...
和以下代码:
$en = 'This is some data that should appear in the textarea for EN';
$de = '';
$es = '';
$fr = '';
$it = '';
$pl = '';
$pt = '';
$zhcn = '';
$zhtw = '';
$jp = '';
$(document).ready(function(){
$('a').click(function(e){
$code = $ + $(this).attr('id');
$('textarea.code').val( $code );
});
});
我想要做的是当用户点击链接时,从相关变量中获取数据并将其放入带有代码类的textarea中。目前我刚收到:function (a,b){return new e.fn.init(a,b,h)}en
我该怎么做?感谢
答案 0 :(得分:2)
你需要这样做:
$('a').click(function(e){
var $code = "$" + $(this).attr('id');
$('textarea.code').val( window[$code] );
});
假设变量是全局的。
这是a demo on JSFiddle(由有线提供)。
答案 1 :(得分:1)
您可能希望使用Object来对此信息进行分组。
var data = {
"en" : "This is some data that should appear in the textarea for EN",
"de" : "",
"es" : "",
"fr" : "",
"it" : "",
...
}
通过这种方式,您不需要弄乱eval
。
var str = data[ this.id ];
答案 2 :(得分:0)
首先,您有一个拼写错误:$ + $(this).attr('id');
应为"$" + $(this).attr('id');
。但这不是真正的问题。
您将输入评估为文字字符串,而不是变量。因此,$code
的值设置为文字字符串“$ en”,而不是$en
变量的值。
你可以用eval($code)
来做,但这是一个非常糟糕的想法。不要那样做。您应该做的是安排变量,以便您可以通过名称访问它们。有多种方法可以做到这一点,但这就是我的方法:
var data = {
en: 'This is some data that should appear in the textarea for EN',
de: '',
es: '',
fr: '',
it: '',
pl: '',
pt: '',
zhcn: '',
zhtw: '',
jp: ''
};
$(document).ready(function(){
$('a').click(function(e){
var $code = data[$(this).attr('id')];
$('textarea.code').val( $code );
});
});