从点击加载变量数据

时间:2012-10-08 20:51:55

标签: javascript jquery

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

<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

我该怎么做?感谢

3 个答案:

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

    });    
});