1

我有一些简单的链接,例如:

<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 );

    });

});

我想要做的是当用户单击链接时,从相关变量中获取数据并将其放入带有代码类的文本区域中。目前我刚刚得到:function (a,b){return new e.fn.init(a,b,h)}en

我该怎么做呢?谢谢

4

3 回答 3

2

你需要做:

$('a').click(function(e){

    var $code = "$" + $(this).attr('id');

    $('textarea.code').val( window[$code] );

});

假设变量是全局的。

这是一个关于 JSFiddle 的演示(由 wirey 提供)。

于 2012-10-08T20:56:44.580 回答
1

您可能希望使用对象来分组此信息。

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 ];
于 2012-10-08T20:56:53.957 回答
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 );    

    });    
});
于 2012-10-08T21:00:40.813 回答