1

.html(); 内で変数を呼び出すようなものです。しかし、正しく機能しません。

var cap2 = "Here is a muddy truck.";
id = $(this).attr("id");
$("#caption").html("cap"+id); // this literally outputs "cap2" into my caption div

明らかに、これは完全なコードではありませんが、知識のある人が私を正しい方向に向けるには十分だと思います。

最後の行がいつこのようになるかにも注意する必要があります

$("#caption").html(cap2); // this correctly outputs "Here is a muddy truck"

すべて順調ですが、数値スロットを動的にする必要があります。何かご意見は?

4

7 に答える 7

4

変数がグローバルに宣言されている場合cap2は、次を使用できます。

$("#caption").html(window["cap"+id]);
于 2012-10-29T18:46:05.200 に答える
0

「悪」の eval 関数を使用する必要があります。

$("#caption").html(eval("cap"+id)); 

あらゆる種類の危険なことを行うことができるので、邪悪です!

于 2012-10-29T18:45:04.890 に答える
0

javascript では、文字列を連結するために「+」が使用されます。関数は文字列パラメーターを受け取るため、変数ではなく文字列として「cap2」を送信しています。
メソッドは、eval()指定された文字列を受け取り、それがコードであるかのように実行されるため、'cap2' 変数が.html()メソッドに送信されます。

$("#caption").html(eval("cap"+id));
于 2012-10-29T18:45:13.923 に答える
0

javascript 関数evalは文字列を受け取り、それを javascript 変数、関数などとして評価します。.html(eval("cap"+id));

于 2012-10-29T18:46:24.387 に答える
0

このようなものが通常どのように処理されるかの例:

<a href="#" id="a0"></a>
<a href="#" id="a1"></a>
<a href="#" id="a2"></a>
<a href="#" id="a3"></a>

$('a').on('click', function(e) {
    e.preventDefault();
    var caps = [
                "Here is a muddy truck.",
                "Here is a strange duck",
                "Here is the proper code",
                "Here's Johnny"
                ],
         id = this.id.replace('a','');

    $("#caption").html(caps[id]);
});

できればクリック関数の外で配列を宣言しますが、これは単なる例です!

于 2012-10-29T18:52:57.243 に答える
0

Adeneo のコメントは、おそらく今までで最も役に立ちました。異なる番号の変数を参照する必要がある場合は、正しい順序で配列を作成し、インデックスを呼び出します。

var caption = $('#caption'), // no use writing a variable on each action
    caps = [
        "Here is a muddy truck.",
        "another caption"
    ]; // fill with your captions

$(document).on('click', 'a', function() {
    caption.html(caps[this.id]);
});
于 2012-10-29T18:53:47.807 に答える