0

定義済み変数のセットがあります。別の変数に動的に値を設定し、その変数が他の定義済み変数の 1 つの名前になります。私はこれをしたいので、ページ上でどの設定変数を使用するかがわかります。

var mwm = "blah"
var vp = "bleh"
var am = "bluh"

var mwm720 = "some link 1"
var mwm717 = "some link 2"
var vp720 = "some link 3"
var vp717 = "some link 4"
...

次に、他のスクリプトをいくつか実行して、条件に応じて変数値を他の変数の名前に設定します。

var myClass = $(this).attr("class").split(' ')[1];
var currDiv = "div." + myClass;
var currVersion = $(this).parent().attr("id");
var linkVers = myClass + currVersion;

linkVers 変数の値は、常に "mwm720"、"mwm717"、"vp720" などになります。これにより、いつ mwmw720 または mwm717 (など) 変数を使用するかがわかります

望ましい動作

動的変数に格納されている変数名の値を使用するためのアラート/呼び出しを取得するにはどうすればよいですか?

alert(linkVers);「mwm720」を返すとしましょう。変数の名前ではなく、mwm720 変数の$(currDiv).html(linkVers);(「some link 1」になります)を挿入するにはどうすればよいですか?

この動作を達成するためのより良い方法がある場合は、他の解決策を確実に楽しみます.

4

4 に答える 4

5

すべての変数を 1 つのオブジェクト内に配置する必要があります。お気に入り:

var messsages = {
    wm : "blah",
    p : "bleh",
    m : "bluh",

    wm720 : "some link 1",
    wm717 : "some link 2",
    p720 : "some link 3",
    p717 : "some link 4"
}

次に、関数内で使用できます

alert(messages[linkVers]);
于 2013-01-18T18:29:22.583 に答える
0

さらに柔軟なアプローチは、バージョンごとに変数をグループ化することです。そうすれば、名前とバージョンを連結することを心配する必要さえありません。

var messsages = {
    720: {
        wm: "some link 1",
        p: "some link 3",
    },
    717: {
        wm: "some link 2",
        p: "some link 4",
    }
};

次に、次のコマンドで正しいバージョンのリンクテキストを取得できます。

var linkVers = messages[currVersion][myClass];

currVersion(同じページにとどまっているため)スクリプトの存続期間を通じては変更されないため、最初に現在のバージョンのメッセージをキャッシュすることもできます。そうすれば、親のを常に検索する必要はありませんid

// In some high scope
var currMessages;

// At startup (e.g. DOM ready)
// You probably need to slightly adjust this
// depending on what $(this).parent() actually signifies
var currVersion = $(this).parent().attr("id");
currMessages = messages[currVersion];

// When retrieving the link text
var linkVers = currMessages[myClass];
于 2013-01-18T18:47:10.253 に答える
0

ウィンドウの名前空間を多数の変数で混雑させない方がよいでしょう。オブジェクトを使用します。

var myProps = {
    mwm720 : "some link 1",
    mwm717 : "some link 2",
    vp720 : "some link 3",
    vp717 : "some link 4"
};

あなたができるよりも

var foo = "mwm720";
console.log(myProps[foo]);

あなたが本当にそれを書いたようにしたいのであれば、角かっこ表記でウィンドウを使用するよりも。

var foo = "mwm720";
console.log(window[foo]);
于 2013-01-18T18:29:56.413 に答える
0

あなたが探しているのは次のとおりだと思いますeval

var myvar = "mvm720";
var mvm720 = "some link 1";

console.log(myvar);  // prints mvm720
console.log(eval(myvar));  //prints "some link"

したがって、あなたの特定のケースでは:

eval ( $(currDiv).html(linkVers) ); 

あなたが探しているものです

于 2013-01-18T18:30:24.147 に答える