2011-11-07 13 views
0

は、私はJavaScriptを使用して、非常に新たなんだとイベントのうち、機能にアクセスすることは不可能:私はこの問題を理解していない

$(function() { 
    var $tab_title_input = $("#tab_title"), 
    $tab_content_input = $("#tab_content"); 
    var tab_counter = 0; 
    var editors = {}; 
    var tab_current = 0; 

    // tabs init with a custom tab template and an "add" callback filling in the content 
    var $tabs = $("#tabs").tabs({ 
     tabTemplate: "<li><a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span></li>", 
     add: function(event, ui) { 
      var tab_content = $tab_content_input.val() || "Tab " + tab_counter + " content."; 
      $(ui.panel).append("<div id=\"editor" + tab_counter + "\" class=\"editor\">" + tab_content + "</div>"); 
      adjust_size(); 
      tab_current = ui.index; 
      editors[tab_current] = ace.edit("editor" + tab_counter); 
      }, 
     show: function(event, ui) { 
      adjust_size(); 
      tab_current = ui.index; // zero-based index 
      editors[tab_current].resize(); 
     }, 
     select: function(event, ui) { 
      adjust_size(); 
      tab_current = ui.index; // zero-based index 
      }, 

    }); 

の問題は、このコード行:

editors[tab_current].resize(); 

は、Uncaught TypeError: Cannot call method 'resize' of undefinedを伝えるすべてを破ります。

しかし、編集者editors[tab_current].resize()はaddイベントでよく定義されており、alert(tab_current)は私に正しい結果を与えます。

答えて

1

editors[tab_current]undefinedを返します。

alert(tab_current)は正しい値を返すことがありますが、それに対応するeditorsという要素があるわけではありません。 alert(editors[tab_current])でテストし、undefinedと表示されている場合は、要素が正しく設定されているかどうかを確認してください。

+0

はい、それはとてもまたは類似:最初の時間は、それが –

+0

は明らかにそれが適切にあなたがそれを呼び出すために行く最初の時間を設定しません未定義が、その後、[オブジェクトのオブジェクト]と、それが適切に設定されているように見える(それが動作)と言います。実行時にコードをトレースして理由を調べます。 – Polynomial

+0

どうすればいいですか?クロムのコンソールは何も情報を与えていない –

0

私はすぐに調査の2つの道を見ることができます:

  1. ace.edit("editor" + tab_counter)リターンを何? いつもは、resizeメソッドでオブジェクトを返すか、時にはundefinedを返しますか?

  2. は、tab_currentの任意の値に対して常にshowの前に呼び出されますか?

+0

1)[オブジェクトオブジェクト]が返され、常にサイズ変更メソッドがありますが、セキュリティに関しては、追加イベントではなく、種まきではないか選択 –

+0

2)そうだと思いますが、最初のタブが作成されたときに他のオブジェクトオブジェクト –

関連する問題