4

li ID 属性 (ユーザー ID になります) の値を取得し、最終的に変数名の一部として使用する文字列の一部として使用したいと考えています。この変数名を使用して配列を作成します。

私は基本を理解していますが、この魔法を実現するための jQuery/javascript の適切な組み合わせを見つけることができないようです。

jQuery('#user-list li').click(function() {
    var userID = jQuery(this).attr("id");

    // i want to add the word array to the end of userID
    var theVariableName = userID + "Array";

    // I want to use this variable to create an array
    var theVariableName = new Array();

    // I want to continue to use the name throughout my document
    theVariableName.push({startTime: 7, endTime: 10});

    alert(theVariableName[0].startTime);

});
4

4 に答える 4

2

オブジェクトを使用して、さまざまなユーザー配列を保持します。

window.userData = {};

$(...).click(function() {
    // ...
    window.userData[userID] = [];
    window.userData[userID].push({startTime:7, endTime:10});

    alert(window.userData[userID][0].startTime);
}

userDataただし、オブジェクトをグローバル名前空間に格納したくない場合があります。偶発的な名前の競合を防ぐために、少なくともそれを自分の名前空間に配置する必要があります。

于 2012-07-31T18:03:26.443 に答える
1

window変数をグローバルオブジェクトに格納できます。

jQuery('#user-list li').click(function() {
    var userID = jQuery(this).attr("id");

    // i want to add the word array to the end of userID
    var theVariableName = userID + "Array";

    // I want to use this variable to create an array
    window[theVariableName] = new Array();

    // I want to continue to use the name throughout my document
    window[theVariableName].push({startTime: 7, endTime: 10});

    alert(window[theVariableName][0].startTime);
});

実際、クロージャで宣言されていないすべてのvar x宣言済み変数は、グローバル オブジェクトに常駐します。xただし、別のグローバル オブジェクトを使用することをお勧めしますuserStorageObject

var userStorageObject = {};
jQuery('#user-list li').click(function() {
    var userID = jQuery(this).attr("id");

    // i want to add the word array to the end of userID
    var theVariableName = userID + "Array";

    // I want to use this variable to create an array
    userStorageObject[theVariableName] = new Array();

    // I want to continue to use the name throughout my document
    userStorageObject[theVariableName].push({startTime: 7, endTime: 10});

    alert(userStorageObject[theVariableName][0].startTime);
});

ここで動作します:http://jsfiddle.net/bingjie2680/NnnRk/

于 2012-07-31T18:01:37.507 に答える
0

あなたはこのようにそれを行うことができます。

var variable = "Array";
window[id+variable] = "value";
于 2012-07-31T18:02:13.160 に答える
-2

試してみてくださいeval

var theVariableName = userID + "Array";
eval(theVariableName+"= new Array()");
于 2012-07-31T18:03:48.957 に答える