1

これが私のオブジェクトの1つにある関数です:

updatePorts: function(nodeKey, portOptions, portArrays) {
  var showing_ports = false;
  $('#ports li').removeClass('active').hide();
  $('#ports .tab-pane').removeClass('active in');
  $.each(portOptions, function(side, options) {
    if (options.editable) {
      $('#ports [href="#'+side+'"]').closest('li').show();
      if (!showing_ports) {
        $('#ports [href="#'+side+'"]').closest('li').addClass('active');
        $('#ports #'+side).addClass('active in');
      }

      $.each(portArrays[side], function(i,port) {
        //do stuff
      }

      showing_ports = true;
    }
  })
}

私の問題は、関数に引数として渡される変数に$.eachループの外でアクセスできることです。portArraysただし、ループ内で同じ変数にアクセスすることはできません。$.each

私は何か間違ったことをしていますか?ループ内でその変数にアクセスするにはどうすればよいですか?

更新: portArrays が実際にアクセスされているコードを追加しました

4

2 に答える 2

0

portArrays 使用している場所で定義されていますが、間違ったインデックスを使用しています。変数は へのsideインデックスportOptionsであり、 ではありませんportArrays

どのようなインデックスが必要ですか? これら 2 つの配列が同じインデックス値で並行して実行される場合、それは一般的に悪い考えです。オブジェクトの 1 つの配列を使用する方がよいため、少なくともコードで文書化する必要があります。

ところで、JS コンソールの正確なエラー メッセージは何ですか? 私の推測が正しくない場合は、エラー メッセージからヒントが得られます。

于 2013-06-04T19:33:57.620 に答える
0

件名に記載されている問題がありましたが、質問者のコードの別の場所に問題があったようです。私のコードは以下のようなもので、必要なものにアクセスできませんでしたthis。最初のログは機能しますが、各ループ内のログは未定義でした。thisjquery each を使用すると再割り当てされることがわかりました - http://api.jquery.com/each/

List.prototype.updateList = function(search) {
    console.log(this.id);
    $.each(this.data, function(item, tags) {
        console.log(this.id); //undefined
    };
}

for .. inthis.data オブジェクトを反復するために使用するように変更しましたが、機能しています。これが誰かを助けることを願っています。

List.prototype.updateList = function(search) {
    console.log(this.id);
    for(var key in this.data){
        console.log(this.id); //hooray
    }
}
于 2014-09-23T19:47:24.320 に答える