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 に答える