Ich habe einige einfache Links wie:

<a id="en">EN</a> <a id="fr">FR</a> etc...

Und den folgenden Code:

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

    });

});

Was ich tun möchte, ist, wenn der Benutzer auf einen Link klickt, die Daten aus der zugehörigen Variablen abruft und sie mit der Codeklasse in den Textbereich einfügt. Momentan bekomme ich nur: function (a,b){return new e.fn.init(a,b,h)}en

Wie mache ich das? Vielen Dank

1
Cameron 9 Okt. 2012 im 00:51

3 Antworten

Beste Antwort

Möglicherweise möchten Sie stattdessen ein Objekt verwenden, um diese Informationen zu gruppieren.

var data = {
  "en" : "This is some data that should appear in the textarea for EN",
  "de" : "",
  "es" : "",
  "fr" : "",
  "it" : "",
  ...
}

Auf diese Weise müssen Sie sich nicht mit {{X0} anlegen }.

var str = data[ this.id ];
1
Alexander 8 Okt. 2012 im 20:56

Zunächst haben Sie einen Tippfehler: $ + $(this).attr('id'); sollte "$" + $(this).attr('id'); sein. Aber das ist nicht das eigentliche Problem.

Sie bewerten die Eingabe als Literalzeichenfolge und nicht als Variable. Der Wert von $code wird also auf die Literalzeichenfolge "$ en" gesetzt, anstatt auf den Wert Ihrer Variablen $en.

Sie könnten eval($code) verwenden, um dies zu tun, ABER DAS IST EINE SEHR SCHLECHTE IDEE. Tu das nicht. Stattdessen sollten Sie Ihre Variablen so anordnen, dass Sie namentlich darauf zugreifen können. Es gibt mehr als einen Weg, dies zu tun, aber so würde ich es tun:

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

    });    
});
0
Justin Morgan 10 Okt. 2012 im 16:07

Sie müssen Folgendes tun:

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

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

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

});

Angenommen, die Variablen sind global.

Hier ist eine Demo zu JSFiddle (bereitgestellt von wirey).

2
Sidharth Mudgal 8 Okt. 2012 im 21:12