0

「myFunction」内にeach()、特定の要素の高さを見つける反復子があります。各高さの値を、各ループの外でアクセス可能な、増分的に生成された変数名に割り当てるにはどうすればよいですか?

function myFunction(){

    $('#div1, #div2 ... #divN').each(function(index){
        /* Increment variable name here */ = $(this).outerHeight();
    });

    // Also use those variables here

};

ありがとう。

4

3 に答える 3

6

このタスクはarrayでよりよく解決され、jQuery の組み込みメソッドのおかげで、一連の要素から特定の値を配列に簡単に抽出できます。

var heights = $('#div1, #div2 ... #divN').map(function(){
    return $(this).outerHeight();
}).get();
// `heights` is an array and
// heights[0] = height of first element in the tree
// heights[1] = height of second element in the tree
// ...

heights配列の順序は、要素をセレクターに配置する順序ではないことを強調する必要があります。jQuery は常に要素を DOM での配置方法に並べ替えます。

参考.map.get


高さを何らかの形で要素を識別できるものに関連付けたい場合は、キーが要素 ID で値が高さであるオブジェクトを使用できます。

var heights = {};
$('#div1, #div2 ... #divN').each(function(){
    heights[this.id] = $(this).outerHeight();
});
// `heights` is an object and
// heights['div1'] = height of element with ID div1
// heights['div2'] = height of element with ID div2
// ...
于 2013-01-31T12:15:20.723 に答える
2

(コメントで提案されているように、配列を使用する代わりに)名前付き変数を動的に作成したい場合は、次のいずれかを行うことができます

$('#div1, #div2 ... #divN').each(function(index){
    window['myVar' + index] = $(this).outerHeight();
}

これにより、myVar0、myVar1... という名前のグローバル変数が作成されます。

そのようにグローバル名前空間を汚染したくない場合は、次のようにします。

var myVars = {};
$('#div1, #div2 ... #divN').each(function(index){
    myVars['var' + index] = $(this).outerHeight();
}

myVars.var0、myVars.var1... などの変数にアクセスします。

于 2013-01-31T12:19:22.403 に答える
2

配列/オブジェクトを使用できます:

function myFunction(){

    var heights = [];

    $('#div1, #div2 ... #divN').each(function(index, value){
        heights[index] = $(this).outerHeight();
    });

    console.log(heights); // etc... etc...

};

次のようにアクセスできます。

heights[1]heights[2]...など

于 2013-01-31T12:16:02.373 に答える